ホームページ >バックエンド開発 >C++ >C クラス テンプレートで静的クラス メンバー (非整数型を含む) を保持するにはどうすればよいですか?

C クラス テンプレートで静的クラス メンバー (非整数型を含む) を保持するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-10 08:46:13790ブラウズ

How Can I Preserve Static Class Members (Including Non-Integral Types) in C   Class Templates?

クラス テンプレート内の静的クラス メンバーの保持

C の領域では、テンプレート クラスの静的データ メンバーを定義したいシナリオに遭遇する可能性があります。しかし、非整数データ型には課題が生じます。この記事では、コンパイルされたコード内で静的メンバーが存在することを確認しながら、型に関係なく静的メンバーを宣言できるソリューションについて詳しく説明します。

次のコード スニペットを検討してください。

template <typename T>
struct S {
    ...
    static double something_relevant = 1.5;
};

お気付きかと思いますが、something_relevant は整数データ型ではないため、コンパイラはエラーをスローします。この問題は、テンプレートが使用時にインスタンス化されるという事実に起因します。S はテンプレートであるため、コンパイル済みファイル内でそのメンバーを定義することはできません。

この障害を克服するには、静的メンバーを定義することに頼ることができます。以下に示すように、ヘッダー ファイル自体:

template <typename T>
struct S {
    static double something_relevant;
};

template <typename T>
double S<T>::something_relevant = 1.5;

ヘッダー ファイルで静的メンバーを定義することで、そのクラス外定義が保証され、コンパイルが回避されます。エラー。さらに、テンプレート内に含まれているため、コンパイラーは潜在的な複数の定義を処理し、クリーンなインスタンス化を保証します。この手法を使用すると、データ型に関係なく、クラス テンプレート内で静的メンバーを維持できるようになり、最終的にコンパイルされたコードに静的メンバーが存在することが保証されます。

以上がC クラス テンプレートで静的クラス メンバー (非整数型を含む) を保持するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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