我实际上并不知道您是否可以声明一个类,然后在同一类的多个对象中使用它的静态实例。进一步来说:
class State {
public:
State();
static CustomNumberDist normal_dist;
private:
int id;
};
所以每个 State 实例都应该包含相同的 CustomNumberDist 实例。我编译但我想知道它是否有效,否则我以后可能会遇到问题。
我实际上并不知道您是否可以声明一个类,然后在同一类的多个对象中使用它的静态实例。进一步来说:
class State {
public:
State();
static CustomNumberDist normal_dist;
private:
int id;
};
所以每个 State 实例都应该包含相同的 CustomNumberDist 实例。我编译但我想知道它是否有效,否则我以后可能会遇到问题。
您给出的声明(头文件,即.h)是完全有效的。
但是在定义(.cpp 文件)中,您需要
State::CustomNumberDist normal_dist;
当您进入链接阶段时,静态对象将需要内存。
这是无效的。它应该是这样的:
class X
{
public:
int normalValue = 5; //NSDMI
static int i;
};
int X::i = 0;
i
需要在记忆中占有一席之地。在不涉及具体对象的内存中。
更多信息可以在这里找到: