Compartir a través de


Error del compilador C2477

"member": no se puede inicializar el miembro de datos estático mediante una clase derivada

Un miembro de datos estático de una clase de plantilla se ha inicializado incorrectamente. Este es un cambio importante respecto a las versiones del compilador de Microsoft C++ anteriores a Visual Studio .NET 2003, con el fin de cumplir con el estándar ISO C++.

El ejemplo siguiente genera el error 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;