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


Why does c++ class need to define static field(data member) outside the class scope?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Initializing private static members
Why I can't initialize non-const static member or static array in class?

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


它必须放在某个地方(在某个对象文件中),以便链接器可以找到它。如果在.h文件中有静态文件的类声明,并将此文件包含在几个.cpp文件中,那么它将不明确,应该为该文件分配哪个对象文件。

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

1
2
3
4
class Foo
{
    static const int n = 42;
};