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

来源:互联网 发布:平面设计求职意向美工 编辑:程序博客网 时间:2024/05/29 05:10

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);  // 发射信号吧

原创粉丝点击