Oyv*_*son 2 c++ boost boost-signals2
我正在使用 boost::signals2 创建一个类,该类使用信号在特定条件下运行事件。这个类有一个方法叫做:RegisterCallback。
此函数应采用信号使用的槽类型的参数(它是void返回类型,双精度值作为唯一的参数)。
但是,我不太确定应该如何在方法签名中定义该参数,因为信号 1 类的源文件对我来说非常不可读。
所以我基本上想这样做:
myTimer(interval);
myTimer.RegisterCallback(&aCallbackFunction);
Run Code Online (Sandbox Code Playgroud)
这是会员信号:
boost::signals2::signal<void (double)> m_signal;
Run Code Online (Sandbox Code Playgroud)
...这是我需要的注册方法(未完成)
/**
* Register a callback function that will be called when the timer interval elapses.
*/
void RegisterCallback(const boost::signals2::signal1<???????> &slot)
{
m_signal.connect(slot);
}
Run Code Online (Sandbox Code Playgroud)
我认为您还可以使用 boost::function 和 boost::bind 库。
typedef booost::signals2::signal(void (double)>::slot_type CallbackSlot
void RegisterCallback(CallbackSlot slot)
{
m_signal.connect(slot);
}
// ...
class MyClass {void handler(double);}
// ...
RegisterCallback(boost::bind(MyClass::handler, this, _1));
Run Code Online (Sandbox Code Playgroud)
我建议您还阅读 boost::function 和 boost::bind 文档以更好地使用信号2。此示例代码未经测试,但包含解决问题所需的所有内容。