Error del compilador C3894
"var": el uso del valor lvalue del miembro de datos estático initonly solo se permite en el constructor de clase de la clase "class"
Los miembros de datos initonly solo se pueden usar como valores lvalue en su punto de declaración o en un constructor estático.
Los miembros de datos initonly de instancia (no estáticos) solo se pueden usar como valores lvalue en su punto de declaración o en constructores de instancia (no estáticos).
El ejemplo siguiente genera el error 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();
}