Errore del compilatore C2477

Aggiornamento: novembre 2007

Messaggio di errore

'membro': i membri dati statici non possono essere inizializzati tramite classi derivate
'member' : static data member cannot be initialized via derived class

Un membro dati static di una classe basata su template è stato inizializzato in modo non corretto. Si tratta di una notevole modifica rispetto alle versioni del compilatore Visual C++ precedenti a Visual Studio .NET 2003, apportata in conformità allo standard ISO C++.

Per ulteriori informazioni, vedere Riepilogo delle ultime modifiche in fase di compilazione.

Nell'esempio seguente viene generato l'errore 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;