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

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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值