クラスの非静的メンバーがクラス定義で初期化されたという質問を見ました。しかし、次のコードをコンパイルしようとすると、コンパイラからエラーが発生します。
class MyClass
{
int n = 2;
};
私が得ているエラーは次のとおりです。
g++ -o ns nonstatic.cpp -Wall -Wextra -pedantic
nonstatic.cpp:3:13: error: ISO C++ forbids initialization of member ‘n’ [-fpermissive]
nonstatic.cpp:3:13: error: making ‘n’ static [-fpermissive]
nonstatic.cpp:3:13: error: ISO C++ forbids in-class initialization of non-const static member ‘n’
私は常に、次のようにコンストラクターでそのようなメンバーを初期化する必要があると考えていました。
class MyClass
{
public:
MyClass ( void ) : n(2) {}
private:
int n;
};
またはn
、コンストラクターの本体内で初期化されます。だから私の質問は: クラスコンストラクターのコンテキスト外で非静的メンバーを初期化できるのはいつですか?
敬具、