C++ 为什么类中不能有静态对象?

C++ 为什么类中不能有静态对象?,c++,static-members,C++,Static Members,提及以下内容: class A { ... }; class B { static A a; // this fails ... static A& getA() { static A a; return a; } // this works ... }; ... B b; b.a <-- gives error: undefined reference to B::a C::x未在实现范围中定义,也没有C的实例,但是,使用一元数+C::x可

提及以下内容:

class A { ... };

class B 
{
    static A a; // this fails
    ...
    static A& getA() { static A a; return a; } // this works
    ...
};
...
B b;
b.a  <-- gives error: undefined reference to B::a
C::x
未在实现范围中定义,也没有
C
的实例,但是,使用
一元数+
C::x
可以访问

你完全可以做到这一点

您可能忘记了在类外定义对象(仅定义一次):

class B { 
    // ...
};

A B::a;

编辑:基于编辑到问题,这现在基本上是确定的,而不仅仅是概率。

您得到的错误是什么?你能说得更具体些吗?在C++中,你可以让静态对象作为你的类的一部分。@ Leunss2k:对不起,固定了。B类中,即使是<代码>静态int n/c>,我也得到相同的结果。关于代码>静态< /代码>,它要求它必须在类之外定义吗?@ SLHASMAIS:C++是如何要求你做事情的。这是有意义的(即使没有创建任何实例的实例,数据项也需要定义),但对于大多数实际的目的,它只是你必须做的事情,而这就是生命(或者是C++ C++)。(非多线程Linux程序环境)。我已经将一些全局变量作为公共静态变量移动到一个类中。@sree:也许把它们放在一个命名空间中会更有意义?
class B { 
    // ...
};

A B::a;