Erreur du compilateur C2477
Mise à jour : novembre 2007
Message d'erreur
'membre' : les données membres static ne peuvent pas être initialisées via une classe dérivée
'member' : static data member cannot be initialized via derived class
Les données membres static d'une classe de modèle n'ont pas été initialisées correctement. Ceci constitue un changement majeur par rapport aux versions du compilateur Visual C++ antérieures à Visual Studio .NET 2003, afin de se conformer à la norme ISO C++.
Pour plus d'informations, consultez le résumé de Compile-Time Breaking Changes.
L'exemple suivant génère l'erreur C2477 :
// C2477.cpp
// compile with: /Za /c
template <class T>
struct S {
static int n;
};
struct X {};
struct A: S<X> {};
int A::n = 0; // C2477
template<>
int S<X>::n = 0;