在课堂上有效地管理大量的升压信号

时间:2013-09-20 19:07:47

标签: c++ boost signals-slots

我有一个包含大量(~100或更多)信号且具有不同签名的类:

class MyClass
{
public:
    boost::signals2::signal<void()>& Signal1();
    boost::signals2::signal<int()>& Signal2();
    boost::signals2::signal<void(std::string&)>& Signal3();
    // etc.
    // etc.
};

(是的,它的“yahw” - 另一个HWND包装器。请不要评论这个计划的含义;-))

当然信号稀疏使用,我不希望每个未使用的信号都有数据成员。

问题
如何有效管理实际需要的信号实例的创建和销毁? 我的一般想法是在第一个插槽连接时将信号添加到地图,并在最后一个插槽断开时删除信号。但是,boost :: signals2 :: signal :: connect等不是虚拟的,因此继承自定义信号类并不是天真的方式。如何跟踪连接/断开连接的插槽?

0 个答案:

没有答案