コンパイラ エラー C3894
'var': initonly 静的データ メンバーの左辺値は、クラス 'class' のクラス コンストラクターだけで使用できます
静的 initonly データ メンバーは、宣言の時点で、または静的コンストラクターでのみ左辺値として使用できます。
インスタンス (非静的) initonly データ メンバーは、宣言の時点で左辺値として、またはインスタンス (非静的) コンストラクターでのみ使用できます。
次の例では C3894 が生成されます。
// C3894.cpp
// compile with: /clr
ref struct Y1 {
initonly static int data_var = 0;
public:
// class constructor
static Y1() {
data_var = 99; // OK
System::Console::WriteLine("in static constructor");
}
// not the class constructor
Y1(int i) {
data_var = i; // C3894
}
static void Test() {}
};
int main() {
Y1::data_var = 88; // C3894
int i = Y1::data_var;
Y1 ^ MyY1 = gcnew Y1(99);
Y1::Test();
}