boost::signals2::trackable — 旨在简化从原始 Boost.Signals 库中使用 boost::signals::trackable 类的代码的移植。
// In header: <boost/signals2/trackable.hpp> class trackable { public: // construct/copy/destruct trackable(); trackable(const trackable&); trackable& operator=(const trackable&); ~trackable(); };
不建议在新代码中使用 trackable
类。 trackable
类不是线程安全的,因为 trackable
对象会在 trackable
析构函数中断开其关联的连接。由于 trackable
析构函数要等到任何派生类的析构函数完成后才会运行,因此会留出一个窗口,在该窗口中,部分析构的对象仍然可能具有活动连接。
使用 Boost.Signals2 进行自动连接管理的首选方法是使用 shared_ptr
管理被追踪对象的生命周期,并使用 signals2::slot::track 方法来追踪它们的生命周期。
当槽中绑定的对象(通过指针或引用)被销毁时,trackable
类提供信号和槽的自动断开。trackable
类只能用作其他类的公共基类;当这样使用时,该类可以绑定到用作槽一部分的函数对象。trackable
对象追踪其所属的信号-槽连接集的方式是未指定的。
trackable
的实际使用取决于是否存在适用于任何可能包含指向可追踪对象的指针或引用的类型的适当 visit_each 重载。
trackable
公共构造/复制/析构trackable();
效果 |
将已连接槽的列表设置为空。 |
抛出 |
不会抛出。 |
trackable(const trackable& other);
效果 |
将已连接槽的列表设置为空。 |
抛出 |
不会抛出。 |
理由 |
信号-槽连接只能通过显式的 connect 方法调用来创建,因此在复制可追踪对象时无法在此处创建。 |
trackable& operator=(const trackable& other);
效果 |
将已连接槽的列表设置为空。 |
返回值 |
|
抛出 |
不会抛出。 |
理由 |
信号-槽连接只能通过显式的 connect 方法调用来创建,因此在复制可追踪对象时无法在此处创建。 |
~trackable();
效果 |
断开所有包含指向此可追踪对象的指针或引用,并且可以通过 visit_each 找到的信号/槽连接。 |