0

私は、研究プロジェクトのイベント ベースのアーキテクチャに取り組んでいます。システムは現在 Qt シグナリングを使用していますが、Qt から離れようとしているため、Qt イベント ループとスレッド間のシグナルとほぼ同じように機能するものが必要です。

おそらく私の判断に反して、宛先スレッドでコールバックを実行するために使用される汎用イベントを作成するために可変個引数テンプレートを使用することにしました。

template<typename dest, typename... args>
class Event {
  public:
    Event(dest* d, void(dest::*func)(args...), args... a)
      : d(d), func(func), pass(a...) { }

    virtual void perform() {
      (d->*func)(pass...);
    }

  protected:

    dest* d;
    void(dest::*func)(args...);
    args... pass;
};

これが可能かどうかを示すものは何も見つかりませんでした。しかし、そうではないことを信じるのは難しいです。それを考えると、このようなことを行う方法があるかどうか疑問に思っていました。ない場合、なぜですか? また、誰かがこれを行うためのより良い方法を持っている場合、私はその提案を歓迎します.

4

2 に答える 2

0

boost::fusion::make_fused を使用します。例を参照してください (すみません、日本語...): http://d.hatena.ne.jp/faith_and_brave/20100804/1280905506

于 2010-10-01T00:39:25.917 に答える