类的静态对象?

时间:2012-09-21 17:03:15

标签: c++

我实际上并不是真的知道你是否可以声明一个类,然后在同一个类的几个对象中使用静态实例。更具体地说:

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

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

2 个答案:

答案 0 :(得分:6)

您提供的声明(标题文件,即.h)完全有效。

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

State::CustomNumberDist normal_dist;

当你到达链接阶段时,静态对象需要内存。

答案 1 :(得分:0)

无效。应该是这样的:

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

int X::i = 0;

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

可在此处找到更多信息:

Static Data Member Initialization