代码之家  ›  专栏  ›  技术社区  ›  the_drow

如何防止从某个信号中删除插槽?

  •  1
  • the_drow  · 技术社区  · 15 年前

    是否可以阻止从boost.signals库中的信号中删除某些插槽?
    如果是这样的话,一个代码应该是什么样子的?我需要为特定的信号创建一个派生类吗?

    1 回复  |  直到 15 年前
        1
  •  1
  •   Edward Strange    15 年前

    提供自己无法返回连接的插槽连接功能。如果没有连接,客户端就无法断开它。

    编辑:代码示例:

    struct my_class
    {
      boost::signals::connection listen_event1(boost::function<void (my_class const&)> const& f)
      {
        return signal1.connect(f);
      }
      void listen_event2(boost::function<void my_class const&)> const& f)
      {
        signal2.connect(f);
      }
    
    private:
      typedef boost::signals::signal<void(my_class const&)> sig_t;
      sig_t signal1;
      sig_t signal2;
    };
    

    无法断开信号2连接。

    推荐文章