順序付けられたスロットに基づいてシグナル システムを実装したいとします。また、関数への接続をブロックすることもできます。より明確にするために:
Case Full Connection: mysignal("string","string") これは両方の関数に接続します。
ケース選択: mysignal("string","string") は func1_receiver にのみ送信します
ケースなし: mysignal("string","string") がブロックされました
だから私のコードは次のようなものです:
/*declaring mysignal with two string arguments*/
boost::signals2::signal<void (string,string)> mysignal;
/*declaring connections*/
boost::signals2::connection to_func_1 = mysignal.connect (0,&func1_receiver);
boost::signals2::connection to_func_2 = mysignal.connect (1,&func2_receiver);
スロットをブロックしたい場合は、次のように記述します。
boost::signals2::shared_connection_block block(to_func_2);
これはすべて正常に機能します。
2 番目のスロットもブロックしたい場合は、次のようにキャストする必要があります。
boost::signals2::shared_connection_block block(to_func_1);
ここで、「'boost::signals2::shared_connection_block ブロック' の再宣言」というエラーが表示されます。
接続を自由にブロック/ブロック解除できると思っていましたが、何か誤解されています。
誰かが私を助けることができますか?