通常、次のboost::signals2::signal
ように定義します。
typedef boost::signals2::signal<void (int)> MySignalType;
MySignalType mySignal;
次に、を使用MySignalType::slot_function_type
して、その信号と互換性のある関数シグネチャを取得できます。
しかし、私は反対のことをしようとしています。
Boostシグナルを使用しない既存のコードがあります。代わりに、コードはaを渡し、boost::function
それを呼び出してイベントを「通知」します。既存ので作成boost::signals2::signal
したいboost::function
。私は最も直感的な組み合わせを試しました:
typedef boost::function<void (int)> MyFunctionType;
typedef boost::signals2::signal<MyFunctionType> MySignalType;
しかし、これはコンパイラによって拒否されます。どちらもBoostパッケージであるため、これが不可能な場合は驚かれることでしょう。私の推測では、boost::function
オブジェクト(またはtypedef)には、純粋関数のシグネチャが必要な場合に使用できる目的と同様の独自の内部typedefがありますが、 boost::functionのドキュメントslot_function_type
にはこのようなものは見つかりませんでした。
同様のQ&Aを検索し、Boostのドキュメントをざっと読んでみましたが、同じことをしている人は見つかりませんでした。
既存のブースト機能の観点からブースト信号を定義する方法はありますか?
ありがとう。