信号库自动跟踪插槽生命周期

3
我需要一个信号/槽C++库,其中一个特定的功能是当具有该槽的对象被销毁时,信号会自动断开与槽的连接。
Boost::signals2仅针对使用boost::shared_ptr创建的对象提供此功能,而我希望在任何地方都使用std::shared_ptr。虽然有一种方法可以让它与std::shared_ptr一起工作,但需要编写一些专门的模板,并且没有信息说明应该如何编写,通常我更愿意避免它(除非在互联网上有代码,但我找不到)。 我知道Qt信号具有此功能,但Qt太大了,无法在每个项目中使用它。
2个回答

2
根据Boost文档(在1.48.0中查看),Boost已经存在针对std::shared_ptr和std::weak_ptr的必要模板具体化,因此可以直接使用std智能指针与signals2结合使用(通过slot::track_foreign)。请注意保留HTML标签。

1
我建议您查看sigslot库--http://sigslot.sourceforge.net。这是一种简单的机制,不需要预处理器(如Qt的信号),并提供已删除插槽的自动断开连接。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接