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

时间:2010-06-01 15:00:18

标签: c++ boost-signals

是否可以阻止从boost.signals库中的信号中删除某些插槽?
如果是这样,那么做这样的事情的代码怎么样呢?我是否需要为该特定信号创建派生类?

1 个答案:

答案 0 :(得分:1)

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

编辑:代码示例:

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;
};

无法断开signal2连接。