オブジェクト指向プログラミングでは、多くの場合、クラス テンプレート内で静的データ メンバーを宣言する必要があります。このようなデータ メンバーには固有の非整数の性質があるため、これは困難な場合があります。この制限を克服する 1 つのアプローチは、宣言ステートメントと定義ステートメントを分離することです。
次のコード例を考えてみましょう。
template <typename T> struct S { ... static double something_relevant; // Declaration };
この宣言は、クラス内に「something_relevant」という名前の静的データ メンバーを作成します。テンプレート「S」。ただし、整数型ではないため、コンパイラはこの宣言を受け入れません。
この問題を解決するには、「something_relevant」の定義を別のステートメントに置くことができます:
template <typename T> double S<T>::something_relevant = 1.5; // Definition
クラス宣言の外側で静的データ メンバーを定義することにより、コンパイラーは、クラス テンプレートのインスタンスの数に関係なく、定義が 1 回だけ評価されることを保証できます。
この手法を使用すると、整数型でない場合でも、クラス テンプレート内に静的データ メンバーを作成できます。また、静的データ メンバーが正しい値で初期化されることも保証されます。
以上がC クラス テンプレートで非整数の静的データ メンバーを宣言するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。