您的位置:首页 > 其它

使用 boost::signals2 的智能连接管理

2009-11-11 16:04 239 查看
boost::signals2 提供了使用智能指针的连接管理。可以通过下面的代码生成智能连接:

using namespace boost::signals2;
boost::shared_ptr<MyClass> class_ptr; // 这是观察者的智能指针

signal<void(int)> shoter; // 这就是我们的信号发射器了

typedef signal<void(int)>::slot_type slot_type; // 信号带 int 参数,无返回值

slot_type myslot(func, class_ptr.get(), _1); // 注意这个 _1, 会用 bind 的朋友们应该知道它是什么吧,是的,它内部使用了bind。还有,这里需要用 get 获取裸指针,不能直接用智能指针,猜猜是为什么?

boost::signals2::connection c=shoter.connect(myslot.track(class_ptr)); // 好了,产生连接吧
shoter(100); // 发射信号吧
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: