0

我实际上并不知道您是否可以声明一个类,然后在同一类的多个对象中使用它的静态实例。进一步来说:

class State {
    public:
        State();
        static CustomNumberDist normal_dist;
    private:
        int id;   
};

所以每个 State 实例都应该包含相同的 CustomNumberDist 实例。我编译但我想知道它是否有效,否则我以后可能会遇到问题。

4

2 回答 2

6

您给出的声明(头文件,即.h)是完全有效的。

但是在定义(.cpp 文件)中,您需要

State::CustomNumberDist normal_dist;

当您进入链接阶段时,静态对象将需要内存。

于 2012-09-21T17:10:36.657 回答
0

这是无效的。它应该是这样的:

class X
{
public:
      int normalValue = 5; //NSDMI
      static int i;
};

int X::i = 0;

i需要在记忆中占有一席之地。在不涉及具体对象的内存中。

更多信息可以在这里找到:

静态数据成员初始化

于 2012-09-21T17:06:20.067 回答