3

我需要一个信号/插槽 c++ 库,它具有一个特定功能,即当带有插槽的对象被销毁时,信号会自动断开插槽。

Boost::signals2 仅为使用 boost::shared_ptr 创建的对象提供此功能,我想在任何地方继续使用 std::shared_ptr。有一个选项可以使其与 std::shared_ptr 一起使用,但它需要编写一些专门的模板并且没有信息它应该如何,通常我宁愿避免它(除非互联网上的某个地方有代码,但是我找不到它)。

我知道 Qt 信号具有此功能,但是 Qt 太大而无法在每个项目中使用它。

4

2 回答 2

2

根据 Boost 文档(在 1.48.0 中检查),Boost 中已经存在必要的模板特化,因此std::shared_ptr智能指针应该可以开箱即用地使用信号 2(通过)。std::weak_ptrstdslot::track_foreign

于 2013-02-19T09:23:40.413 回答
1

我建议看看 sigslot 库——http: //sigslot.sourceforge.net

这是一个简单的机制,不需要预处理器(如 Qt 的信号)并提供已删除插槽的自动断开连接。

于 2013-02-22T21:22:31.700 回答