Eug*_*ene 3 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()> signal;
VOID SignalCaller()
{
signal();
}
int main( )
{
Foo foo;
//foo.AddHandler(signal); // I want to
foo.AddHandler(&SignalCaller); // I have to
}
Run Code Online (Sandbox Code Playgroud)
使用在信号类型中声明的类型"slot_type"
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);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1283 次 |
| 最近记录: |