C++ 将boost::信号作为boost::函数传递
我有一个类,它的信号成员用boost::function封装 是否可以使用此API添加另一个信号作为处理程序C++ 将boost::信号作为boost::函数传递,c++,boost,boost-signals,C++,Boost,Boost Signals,我有一个类,它的信号成员用boost::function封装 是否可以使用此API添加另一个信号作为处理程序 class Foo { public: VOID AddHandler(boost::function<VOID()> handler) { m_signal.connect(handler); } private: boost::signal<VOID()> m_signal; }; boost::signal<VOID()&
class Foo
{
public:
VOID AddHandler(boost::function<VOID()> handler)
{
m_signal.connect(handler);
}
private:
boost::signal<VOID()> m_signal;
};
boost::signal<VOID()> signal;
VOID SignalCaller()
{
signal();
}
int main( )
{
Foo foo;
//foo.AddHandler(signal); // I want to
foo.AddHandler(&SignalCaller); // I have to
}
class-Foo
{
公众:
VOID AddHandler(boost::函数处理程序)
{
m_信号连接(处理器);
}
私人:
boost::信号m_信号;
};
boost::信号;
VOID SignalCaller()
{
信号();
}
int main()
{
富富,;
//foo.AddHandler(信号);//我想
foo.AddHandler(&SignalCaller);//我必须
}
使用信号类型中声明的类型“插槽类型”
class Foo
{
public:
typedef boost::signal0<void> Signal;
typedef Signal::slot_type Slot;
//allowed any handler type which is convertible to Slot
void AddHandler(Slot handler)
{
m_signal.connect(handler);
}
private:
Signal m_signal;
};
void f()
{
std::cout << "f() called";
}
//usage
Foo foo;
foo.AddHandler(signal);
foo.AddHandler(&f);
class-Foo
{
公众:
类型DEF增压::信号0信号;
typedef信号::槽\ U型槽;
//允许任何可转换为插槽的处理程序类型
void AddHandler(插槽处理程序)
{
m_信号连接(处理器);
}
私人:
信号m_信号;
};
void f()
{
标准::cout