具有不同参数的 C++ 增强信号和插槽?
C++ boost signals and slots with different parameters?
能否将 C++ 信号链接到具有不同参数列表的插槽?
即一个槽带 1 个参数,另一个带 2 个,依此类推...
然后你用 1 个或 2 个参数调用那个信号,它调用相应的槽?
不,signal
实例的元数由其类型定义。如果您检查 boost::signals2
template class (or the deprecated 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++ 信号链接到具有不同参数列表的插槽?
即一个槽带 1 个参数,另一个带 2 个,依此类推...
然后你用 1 个或 2 个参数调用那个信号,它调用相应的槽?
不,signal
实例的元数由其类型定义。如果您检查 boost::signals2
template class (or the deprecated 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
参数类型,它可以包含多种数据,例如由子类定义。