可以将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/