编译器错误 C2477

更新:2007 年 11 月

错误消息

“成员”: 静态数据成员无法通过派生类初始化

模板类的静态数据成员已被错误初始化。这是对早于 Visual Studio .NET 2003 的 Visual C++ 编译器版本的重大更改,以便与 ISO C++ 标准相符。

有关更多信息,请参见编译时的重大更改摘要。

下面的示例生成 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;