次のサンプルコードを書きました:
class MyClass {
static int a;
public:
MyClass ( int i ) : a ( i ) {
cout << " \n ctor called. a is : "<< a << " \n";
}
};
int MyClass::a = 1;
int main( ) {
MyClass my(2);
}
静的データメンバーはコンストラクター初期化子リストで使用できないため、これによりコンパイルエラーが発生することはわかっています。
では、クラスのオブジェクトが作成されるたびに静的データ メンバーを初期化する方法は? コンストラクターから呼び出される静的メンバー関数でそれができることを願っています。それが唯一可能な方法ですか?