ホームページ >バックエンド開発 >C++ >C クラス テンプレートで非整数の静的データ メンバーを宣言するにはどうすればよいですか?

C クラス テンプレートで非整数の静的データ メンバーを宣言するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-03 15:25:10547ブラウズ

How to Declare Non-Integral Static Data Members in C   Class Templates?

クラス テンプレートでの静的データ メンバーの宣言

オブジェクト指向プログラミングでは、多くの場合、クラス テンプレート内で静的データ メンバーを宣言する必要があります。このようなデータ メンバーには固有の非整数の性質があるため、これは困難な場合があります。この制限を克服する 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 サイトの他の関連記事を参照してください。

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