ホームページ  >  記事  >  バックエンド開発  >  クラス定義の外でテンプレートのメンバー関数を定義するにはどうすればよいですか?

クラス定義の外でテンプレートのメンバー関数を定義するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-04 01:01:30612ブラウズ

How to Define a Template Member Function Outside of the Class Definition?

クラス定義外でのテンプレート メンバー関数の定義

テンプレート プログラミングでは、クラス定義の外でテンプレート メンバー関数を定義する必要がある場合があります。両方のテンプレート パラメーターへのアクセスを維持しながら、クラス定義を作成します。

次のコード スニペットを考えてみましょう:

<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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。