Freigeben über


Compilerwarnung (Ebene 2) C4356

'member' : Statisches Datenmemm kann nicht über abgeleitete Klasse initialisiert werden.

Die Initialisierung eines statischen Datenelements war krank. Der Compiler hat die Initialisierung akzeptiert. Um die Warnung zu vermeiden, initialisieren Sie das Element über die Basisklasse.

Verwenden Sie die Pragma-Warnung , um diese Warnung zu unterdrücken.

Im folgenden Beispiel wird C4356 generiert:

// 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;
}