编译器警告(等级 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;
}