是否可以为`boost :: signal`添加一些条件

时间:2014-06-10 07:58:00

标签: c++ boost boost-signals

是否可以向boost::signal添加一些条件。它可能会得到一些布尔函数,当我发出信号时,它应检查函数是否返回true然后发出。

我不想在发射期间检查状况,因为它在许多地方发射。我也不想检查插槽中的情况,因为它不应该知道这种情况。

2 个答案:

答案 0 :(得分:2)

如果你需要以这种方式从很多地方发出信号,我会为它添加一个方法:

void emitSignal()
{
   if( /* condition */ ) {
       _signal();
   }
}

然后你拨打emitSignal()而不是直接发出信号。

答案 1 :(得分:2)

我将其设计为适配器。该适配器具有用于原始信号的插槽,检查条件,并在测试通过时发出第二个信号。