【问题标题】:C++ boost signals and slots with different parameters?C ++提升信号和具有不同参数的插槽?
【发布时间】:2016-11-18 19:54:09
【问题描述】:

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

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

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

【问题讨论】:

    标签: c++ boost signals slots


    【解决方案1】:

    不,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 参数类型,例如由子类定义。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多