1. ホーム
  2. c++

[解決済み] クラステンプレートでの静的メンバ初期化

2022-04-22 12:49:46

質問

こんなことをしたいのですが。

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

というのがありますが something_relevant は積分型ではありません。それは T の静的メンバであることに依存しているが、既存のコードは、それが S .

Sはテンプレートなので、コンパイルされたファイルの中に定義を入れることはできません。どうすればいいのでしょうか?

どのように解決するのですか?

ヘッダーに定義するだけです。

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

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

これはテンプレートの一部なので、他のテンプレートと同様に、コンパイラはこれが一度だけ定義されることを確認します。