컴파일러 오류 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();
}