我需要一个信号/插槽c ++库,其中包含一个特定功能,当带有插槽的对象被破坏时,信号会自动断开插槽。
Boost :: signals2仅为使用boost :: shared_ptr创建的对象提供此功能,我希望在任何地方继续使用std :: shared_ptr。有一个选项可以使它与std :: shared_ptr一起工作,但它需要编写一些专门的模板,并且没有信息它应该如何,通常我宁愿避免它(除非在互联网的某处有代码,但是我找不到了。)
我知道Qt信号有这个功能,但Qt太大了,无法在每个项目中使用它。
答案 0 :(得分:2)
根据Boost文档(在1.48.0中检查),Boost中已存在std::shared_ptr
和std::weak_ptr
所需的模板特化,因此std
智能指针应该可用于信号框2(通过slot::track_foreign
)。
答案 1 :(得分:1)
我建议你看看sigslot库 - http://sigslot.sourceforge.net
这是一种简单的机制,不需要预处理器(如Qt的信号),并自动断开已删除的插槽。