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