0

順序付けられたスロットに基づいてシグナル システムを実装したいとします。また、関数への接続をブロックすることもできます。より明確にするために:

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 ブロック' の再宣言」というエラーが表示されます。

接続を自由にブロック/ブロック解除できると思っていましたが、何か誤解されています。

誰かが私を助けることができますか?

4

0 に答える 0