Mik*_*ike 1 c++ boost boost-signals
构建以下函数时出现构建错误:
template <class T> class Event {
public:
typedef boost::signal<void (void*, const T)> signal_t;
typedef boost::signals::connection connection_t;
public:
Event() { }
connection_t connect(signal_t::slot_type subscriber){
return signal.connect(subscriber);
}
}
Run Code Online (Sandbox Code Playgroud)
错误:
error: 'class boost::signal<void ()(void*, T), boost::last_value<typename boost::function_traits<void ()(void*, T)>::result_type>, int, std::less<int>, boost::function<void ()(void*, T)> >::slot_type' is not a type
Run Code Online (Sandbox Code Playgroud)
我认为这与它的模板化事实有关,但我不确定如何解决它.我试过添加,这样
connection_t connect(signal_t::slot_type<T> subscriber)
Run Code Online (Sandbox Code Playgroud)
但这只是产生了另一个错误.
告诉编译器它是一个类型typename:
connection_t connect(typename signal_t::slot_type subscriber){
return signal.connect(subscriber);
}
Run Code Online (Sandbox Code Playgroud)
问题在于signal_t取决于模板参数T,因此您需要明确告诉编译器signal_t::slot_type将是一个类型.