1

boost.signals ライブラリのシグナルから特定のスロットの削除をブロックすることは可能ですか?
もしそうなら、そのようなことを行うコードはどのように見えるでしょうか? その特定のシグナルのためだけに派生クラスを作成する必要がありますか?

4

1 に答える 1

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 接続は切断できません。

于 2010-06-01T16:05:27.710 に答える