0

質問が非常に基本的な場合は申し訳ありません。Boost.signals のようなテンプレート実装の単純なサンプル コードを 1 つ見ることができません。

 boost::signal<void ()> sig;

私が知っているのは以下です:

 template <class T>
  TemplateClass {
      T t;
   };


   TemplateClass<int> a;

親切にいくつかの指針を提供してください。

4

2 に答える 2

0

問題が何であるかはわかりませんが、ブースト シグナルとは、パブリッシャー/サブスクライバー システムを作成して、関係者にイベントをディスパッチできるようにすることです。

宣言 -boost::signal sig;- は、その下にリストされているような単純なテンプレートですが、型は関数シグネチャです (関数ポインターと混同しないでください)。サブスクライバーは、その署名を使用してコールバックを提供できます。

簡単な Hello World の例を次に示します。

http://www.boost.org/doc/libs/1_51_0/doc/html/signals/tutorial.html#id3193274

それが役立つことを願っています

于 2012-10-18T06:46:59.133 に答える
0

boost::signals2::signal のようなテンプレート パラメータを作成する方法が必要ですか? 実装サンプルはこちら:

#include <tuple>

template <class Signature>
class TemplateClass; // declaration only

template <class R, class... Args>
class TemplateClass<R(Args...)> { // partial specialization as function like signature
public:
    typedef R result_type;
    typedef std::tuple<Args...> arg_types;

    R operator()(const Args&... args)
    {
        return invoke_function(args...);
    }
};

int main()
{
    TemplateClass<void(int, double)> x;
    x(1, 3.14);
}
于 2012-10-19T01:25:30.533 に答える