假设我想实现一个基于有序槽的信号系统,我还可以阻止连接到一个函数。为了更清楚:
案例全连接: 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);
这一切都很好。
如果我还想阻止第二个插槽,我应该投一个:
boost::signals2::shared_connection_block block(to_func_1);
在这里我得到一个错误:“'boost::signals2::shared_connection_block block'的重新声明”
我想我可以随意阻止/取消阻止连接,但我误解了一些东西。
有人可以帮助我吗?