Можно ли добавить какое-то условие к boost::signal
, Он может получить некоторую логическую функцию, и когда я посылаю сигнал, он должен проверить, возвращает ли функция значение true, а затем произвести.
Я не хочу проверять состояние во время излучения, потому что оно излучается во многих местах. Я также не хочу проверять состояние в слоте, потому что он не должен знать об этом условии.
Если вам нужно излучать сигнал из многих мест таким образом, я бы добавил для него метод:
void emitSignal()
{
if( /* condition */ ) {
_signal();
}
}
тогда вы звоните emitSignal()
вместо того, чтобы излучать сигнал напрямую.
Я бы разработал это как адаптер. Этот адаптер имеет слот для исходного сигнала, проверяет состояние и выдает второй сигнал, если тест пройден.