Compartir a través de


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();
}