ホームページ >バックエンド開発 >C++ >C クラス テンプレートで静的データ メンバーを定義および初期化する方法

C クラス テンプレートで静的データ メンバーを定義および初期化する方法

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-02 08:36:14460ブラウズ

How to Define and Initialize Static Data Members in C   Class Templates?

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

クラス テンプレート内で静的データ メンバーを定義する必要が生じることがよくあります。ただし、クラス宣言内でメンバーを定義する従来のアプローチは、非整数データ型であるためクラス定義の外で初期化する必要があるため、現実的ではありません。これは、特にクラスがテンプレートである場合に問題を引き起こし、定義を別のコンパイル済みファイルに配置することを禁止します。

この問題を解決するには、ヘッダー ファイル内で静的データ メンバーを定義し、初期化する手法が必要です。それは別の定義で外側にあります。以下に例を示します。

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

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

このアプローチでは、静的データ メンバー something_relevant が最初にクラス テンプレート定義内で宣言されます。次に、その初期化は外部の別の定義で実行されます。この定義では、任意の非整数データ型を使用できます。定義はテンプレートの一部であるため、コンパイラーはそれが 1 回だけ定義されるようにし、複数の定義を回避します。

以上がC クラス テンプレートで静的データ メンバーを定義および初期化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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