我想封装一个signals2::signal对象并公开connect和operator()函数,但是它们的原型是什么样子的呢?
示例:
#include <boost/signals2/signal.hpp>
template<typename T> class A {
public:
typedef boost::signals2::signal<T> SIG_T;
void connect( TYPE1 arg ){
s.connect(arg);
}
void fire ( TYPE2 arg ){
s(arg);
}
private:
SIG_T s;
};那么如何表示TYPE1和TYPE2的正确类型,我假设它类似于SIG_T::?
发布于 2011-04-04 01:49:44
connect使用typename SIG_T::slot_type const &。
operator()采用typename SIG_T::argument_type (也定义为typename SIG_T::arg<0>::type)。
或者,您可以使用模板来避免担心确切的定义,并接受任何可以转换为正确类型的内容:
template <typename Slot> void connect(Slot const & slot) {s.connect(slot);}
template <typename Arg> void fire(Arg const & arg) {s(arg);}发布于 2011-04-03 22:22:02
signal类概要是here,包括signal::connect重载的签名。
https://stackoverflow.com/questions/5530106
复制相似问题