【发布时间】:2013-05-26 13:47:50
【问题描述】:
使用 Boost.Signals 时,boost 允许您从 boost::signals::trackable 派生,以简化对象/连接生命周期管理(请参阅 boost documentation)。
我在我的项目的早期阶段,我在想,是否从boost::signals::trackable中派生
- 我编写的每一个未来可能使用 Boost.Signals 的新类
- 或者只有在课堂上,我确信他们需要
trackablebas e-class 的功能
第一种方法的主要原因是防止我忘记来自boost::signals::trackable。
还有双重派生,如
class Foo : public Base, public boost::signals::trackable
{
};
变得不必要。
另一方面,防止内存泄漏不应该是主要的设计方面。应该使用 valgrind 等测试和分析工具来检测内存泄漏。
哪种方法更适合成长中的项目?
【问题讨论】:
-
如果您担心,也许可以编写一组您总是用来连接信号/插槽的函数,而不是直接使用其中有一个静态断言的 signal::connect 类必须派生自升压::信号::可追踪。也许增强信号无论如何都提供了一种方法。这样,如果您忘记了,您的项目将无法编译。
-
为什么不用
Boost.Signals2,它有更灵活和强大的跟踪机制? -
@IgorR。我没有看过 Boost.Signals2,因为我认为多线程支持会减慢我的应用程序的速度。但是在查看了connection Management 之后,我将使用
Boost.Signals2。谢谢! -
@Random Citizen 你甚至可以通过更改 MutexType ty dummy_mutex 来禁用锁定:boost.org/doc/libs/1_53_0/doc/html/signals2/…
-
@IgorR。谢谢你的帮助。也许将您的答案作为官方答案发布是个好主意?
标签: c++ boost coding-style boost-signals boost-signals2