我实际上并不是真的知道你是否可以声明一个类,然后在同一个类的几个对象中使用静态实例。更具体地说:
class State {
public:
State();
static CustomNumberDist normal_dist;
private:
int id;
};
因此每个State实例都应包含CustomNumberDist的相同实例。我编译,但我想知道它是否有效,否则我可能会在以后遇到问题。
答案 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
需要在记忆中占有一席之地。在不涉及具体对象的存储器中。
可在此处找到更多信息: