为什么c ++类需要在类范围之外定义静态字段(数据成员)?

时间:2012-06-15 06:52:16

标签: c++

  

可能重复:
  Initializing private static members
  Why I can't initialize non-const static member or static array in class?

对我来说很奇怪。为什么不假设全局范围内存在静态字段? 感谢。

1 个答案:

答案 0 :(得分:5)

它必须放在某处(在某个目标文件中),因此链接器可以找到它。如果您在.h文件中声明了静态字段并将该文件包含在几个.cpp文件中,那么它将是不明确的,哪个目标文件应该为此字段分配。

请注意,原始类型const static字段可以在类声明中初始化:

class Foo
{
    static const int n = 42;
};