컴파일러 경고(수준 2) C4356
'member': 정적 데이터 멤버는 파생 클래스를 통해 초기화할 수 없습니다.
정적 데이터 멤버의 초기화가 잘못되었습니다. 컴파일러가 초기화를 수락했습니다. 경고를 방지하려면 기본 클래스를 통해 멤버를 초기화합니다.
경고 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;
}