Avertissement du compilateur (niveau 2) C4356

'member' : le membre de données statique ne peut pas être initialisé par le biais d’une classe dérivée

L’initialisation d’un membre de données statiques n’a pas été formée. Le compilateur a accepté l’initialisation. Pour éviter l’avertissement, initialisez le membre via la classe de base.

Utilisez le pragma d’avertissement pour supprimer cet avertissement.

L’exemple suivant génère l’erreur 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;
}