2

signal2::signal オブジェクトをカプセル化し、connect および operator() 関数を公開したいのですが、それらのプロトタイプはどのように見えますか?

例:

#include <boost/signals2/signal.hpp>

template<typename T> class A {
    public:
        typedef boost::signals2::signal<T> SIG_T;

        void connect( TYPE1 arg ){
            s.connect(arg);
        }

        void fire ( TYPE2 arg ){
            s(arg);
        }

    private:
        SIG_T s;
};

TYPE1 と TYPE2 の正しい型を表す方法は、SIG_T::??? のようなものだと思います。

4

2 に答える 2

2

connectかかりますtypename SIG_T::slot_type const &

operator()テイクtypename SIG_T::argument_type( としても定義されますtypename SIG_T::arg<0>::type)。

または、テンプレートを使用して、正確な定義について心配することを避け、正しい型に変換可能なものをすべて受け入れることができます。

template <typename Slot> void connect(Slot const & slot) {s.connect(slot);}
template <typename Arg> void fire(Arg const & arg) {s(arg);}
于 2011-04-03T17:49:43.943 に答える
0

オーバーロードのシグネチャを含む、signalクラスの概要はここsignal::connectにあります。

于 2011-04-03T14:22:01.790 に答える