0

假设我想实现一个基于有序槽的信号系统,我还可以阻止连接到一个函数。为了更清楚:

案例全连接: 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'的重新声明”

我想我可以随意阻止/取消阻止连接,但我误解了一些东西。

有人可以帮助我吗?

4

0 回答 0