我有一个包含大量(~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等不是虚拟的,因此继承自定义信号类并不是天真的方式。如何跟踪连接/断开连接的插槽?