2016-07-15 8 views
0

Может ли сигнал C++ связываться с слотами с разными списками параметров?C++ сигналы и слоты с разными параметрами?

т.е. один слот занимает 1 параметр, другой занимает 2, и т.д. ...

И затем вызвать этот сигнал с 1 или 2-х параметров и вызывает соответствующий слот?

ответ

1

Нет, arity экземпляра signal определяется его типом. Если рассмотреть определение boost::signals2 template class (или устаревшей boost::signals):

template<typename Signature, 
     typename Combiner = boost::signals2::optional_last_value<R>, 
     typename Group = int, typename GroupCompare = std::less<Group>, 
     typename SlotFunction = boost::function<Signature>, 
     typename ExtendedSlotFunction = boost::function<R (const connection &, T1, T2, ..., TN)>, 
     typename Mutex = boost::signals2::mutex> 
class signal : public boost::signals2::signal_base { 

Вызывающая подпись сигнала и его слотов фиксируются в параметрах шаблона.

Обходным решением было бы определить тип аргумента Event, который может содержать несколько видов данных, например. определенных подклассами.