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

即一个插槽使用1个参数,另一个插槽使用2个参数,依此类推...

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

最佳答案

不,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参数类型,该参数类型可以包含多种数据,例如由子类定义。

关于c++ - C++ boost 信号和带有不同参数的插槽?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38398910/

10-12 17:04
查看更多