다음을 통해 공유


컴파일러 경고(수준 2) C4356

업데이트: 2007년 11월

오류 메시지

'member' : 정적 데이터 멤버는 파생 클래스를 통해 초기화할 수 없습니다.
'member' : static data member cannot be initialized via derived class

정적 데이터 멤버 초기화의 형식이 올바르지 않습니다. 컴파일러에서는 이러한 초기화를 허용합니다.

이는 Visual C++ .NET 2003 컴파일러의 주요 변경 내용입니다. 자세한 내용은 컴파일 타임의 주요 변경 내용 요약을 참조하십시오.

모든 버전의 Visual C++에서 코드가 똑같은 방식으로 작동하도록 하려면 기본 클래스를 통해 멤버를 초기화하십시오.

이 경고를 표시하지 않으려면 warning pragma를 사용하십시오.

다음 샘플에서는 C4356 경고가 발생하는 경우를 보여 줍니다.

// C4356.cpp
// compile with: /W2 /EHsc
#include <iostream>

template <class T>
class C {
   static int n;
};

class D : C<int> {};

int D::n = 0; // C4356
// try the following line instead
// int C<int>::n = 0;

class A {
public:
   static int n;
};

class B : public A {};

int B::n = 10;   // C4356
// try the following line instead
// int A::n = 99;

int main() {
   using namespace std;
   cout << B::n << endl;
}