さまざまなシグネチャを持つ多数 (~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 などは仮想ではないため、カスタム シグナル クラスの継承は単純な方法では機能しません。スロットの接続/切断を追跡するにはどうすればよいですか?