クラス定義外でのテンプレート メンバー関数の定義
テンプレート プログラミングでは、クラス定義の外でテンプレート メンバー関数を定義する必要がある場合があります。両方のテンプレート パラメーターへのアクセスを維持しながら、クラス定義を作成します。
次のコード スニペットを考えてみましょう:
<code class="cpp">template <class T> class Foo { public: template <class U> void bar(); };</code>
クラス定義の外で bar 関数を実装するには、次の構文を使用できます。
<code class="cpp">template<class T> template <class U> void Foo<T>::bar() { ... }</code>
この構文は、bar 関数がテンプレート パラメーター T を持つ Foo クラスのメンバー関数であることをコンパイラーに伝えます。bar の定義内では、次のように T と追加のテンプレート パラメーター U の両方にアクセスできます。必要です。
例:
<code class="cpp">template<class T> template <class U> void Foo<T>::bar() { std::cout << "T: " << typeid(T).name() << ", U: " << typeid(U).name() << std::endl; }</code>
このコードは、bar 関数が呼び出されたときに T および U テンプレート パラメーターの名前を出力します。
以上がクラス定義の外でテンプレートのメンバー関数を定義するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。