信号库自动跟踪插槽寿命

时间:2013-02-14 21:06:18

标签: c++ api signals signals-slots

我需要一个信号/插槽c ++库,其中包含一个特定功能,当带有插槽的对象被破坏时,信号会自动断开插槽。

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

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

2 个答案:

答案 0 :(得分:2)

根据Boost文档(在1.48.0中检查),Boost中已存在std::shared_ptrstd::weak_ptr所需的模板特化,因此std智能指针应该可用于信号框2(通过slot::track_foreign)。

答案 1 :(得分:1)

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

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