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