【问题标题】:Signals library which tracks slots lifetime automatically自动跟踪插槽生命周期的信号库
【发布时间】:2013-02-14 21:06:18
【问题描述】:

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

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

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

【问题讨论】:

    标签: c++ api signals signals-slots


    【解决方案1】:

    根据 Boost 文档(在 1.48.0 中检查),std::shared_ptrstd::weak_ptr 的必要模板特化已经存在于 Boost 中,所以 std 智能指针应该可以开箱即用地使用信号2(通过 @ 987654324@).

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2010-09-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-11
        • 2017-09-06
        • 2022-11-10
        • 1970-01-01
        相关资源
        最近更新 更多