Можно ли добавить условие `boost :: signal`?

Можно ли добавить какое-то условие к boost::signal, Он может получить некоторую логическую функцию, и когда я посылаю сигнал, он должен проверить, возвращает ли функция значение true, а затем произвести.

Я не хочу проверять состояние во время излучения, потому что оно излучается во многих местах. Я также не хочу проверять состояние в слоте, потому что он не должен знать об этом условии.

2

Решение

Если вам нужно излучать сигнал из многих мест таким образом, я бы добавил для него метод:

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

тогда вы звоните emitSignal() вместо того, чтобы излучать сигнал напрямую.

2

Другие решения

Я бы разработал это как адаптер. Этот адаптер имеет слот для исходного сигнала, проверяет состояние и выдает второй сигнал, если тест пройден.

2

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector