是否可以向boost::signal
添加一些条件。它可能会得到一些布尔函数,当我发出信号时,它应检查函数是否返回true然后发出。
我不想在发射期间检查状况,因为它在许多地方发射。我也不想检查插槽中的情况,因为它不应该知道这种情况。
答案 0 :(得分:2)
如果你需要以这种方式从很多地方发出信号,我会为它添加一个方法:
void emitSignal()
{
if( /* condition */ ) {
_signal();
}
}
然后你拨打emitSignal()
而不是直接发出信号。
答案 1 :(得分:2)
我将其设计为适配器。该适配器具有用于原始信号的插槽,检查条件,并在测试通过时发出第二个信号。