1. ホーム
  2. c++

[解決済み] C++でstaticなconstメンバを初期化する方法は?

2023-03-01 19:02:37

質問

静的なconst値をコンストラクタの外で初期化することは可能ですか? また、メンバ宣言と同じ場所で初期化することはできますか?

class A {
private:
  static const int a = 4;
  /*...*/
};

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

はい、できます。ただし、int型に限ります。 もし、静的メンバを他の型にしたい場合は、cppファイルのどこかで定義する必要があります。

class A{
private:
 static const int a = 4; // valid
 static const std::string t ; // can't be initialized here
 ...
 ...
};


// in a cpp file where the static variable will exist 
const std::string A::t = "this way it works";

また、このルールはC++11で削除され、(コンパイラがその機能を提供すれば)クラスのメンバ宣言で直接必要なものを初期化できるようになりました。