C ++使用不同参数增强信号和插槽?

时间:2016-07-15 14:40:18

标签: c++ boost signals slots

C ++信号可以链接到具有不同参数列表的插槽吗?

即。一个槽需要1个参数,另一个需要2个等等...

然后用1或2个参数调用该信号并调用相应的插槽?

1 个答案:

答案 0 :(得分:1)

不,signal实例的arity由其类型定义。如果您检查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参数类型,它可以包含多种数据,例如:由子类定义。