使用 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); // 发射信号吧
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); // 发射信号吧
相关文章推荐
- 1月9日云栖精选夜读:场景化封装,一站式使用,普惠AI集成 ——阿里云发布智能媒体管理产品
- boost::asio 连接管理6
- 使用PowerShell 连接管理Office 365前准备要求
- jdbc数据库连接管理封装工具类,不同使用属性文件配置数据库连接信息(1)
- boost::asio 连接管理10
- boost::asio 连接管理1
- 使用JBoss管理数据库连接的方法(JDNI方式)
- 使用c3p0连接数据库、操作数据库和数据库的事务管理,基于mybatis框架
- 使用Boost的DLL库管理动态链接库
- C#中数据库连接字符串的管理和使用
- 场景化封装,一站式使用,普惠AI集成 ——阿里云发布智能媒体管理产品
- 一步步学习SPD2010--第七章节--使用BCS业务连接服务(5)--创建和管理外部列表
- 一步步学习SPD2010--第七章节--使用BCS业务连接服务(10)--管理外部内容类型
- 一步步学习微软InfoPath2010和SP2010--第十二章节--管理和监控InfoPath Form Services(IPFS)(6)--使用Fiddler监控数据连接Postback
- 智能指针tr1::shared_ptr、boost::shared_ptr使用
- 【原/转】【boost】智能指针使用规则以及介绍
- 使用Boost的DLL库管理动态链接库
- boost::share_ptr智能指针使用示例
- 使用C3P0管理数据库连接,继续我们的JDBC封装