다음을 통해 공유


컴파일러 오류 C3894

'var': 'class' 클래스의 클래스 생성자에서만 정적 데이터 멤버의 l-value 사용이 허용됩니다.

정적 정적 데이터 멤버는 선언 지점 또는 정적 생성자에서만 l 값으로 사용할 수 있습니다.

인스턴스(비정적) 정적 데이터 멤버는 선언 지점 또는 인스턴스(비정적) 생성자에서만 l 값으로 사용할 수 있습니다.

다음 샘플에서는 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();
}