经过一些研究后,我很惊讶地发现我还没有找到这样的问题,我只是想知道为什么我不能为静态变量赋值?
注意我没有使用任何标题我只是在一个cpp文件中创建一个类(我知道不是很好的做法)这里是我得到的错误
main.cpp|17|error: ISO C++ forbids in-class initialization of non-const static member 'Rabbit::now'|
在Java中,这不是问题
感谢
class Rabbit
{
public:
string name;
string color;
int age;
bool friendly;
int happiness;
static time_t now = 4;
const int currentID;
};
答案 0 :(得分:1)
如果您问如何在c ++中执行此操作,那么
//.h
class Rabbit
{
public:
static int now;
};
//.cpp
int Rabbit::now = 4;
答案 1 :(得分:1)
我只是想知道为什么我不能为静态变量赋值?
您当然可以将任何您想要的值分配给静态变量。您只是不在类定义本身中分配它。原因是您无法多次初始化static
变量!如果您被允许在类定义中初始化它,那将是有问题的。
我没有使用任何标题我只是在一个cpp文件中创建一个类(我知道不是很好的做法)
右。好吧,如果你使用标题,你会发现为什么static
类定义中的变量初始化会有问题。包含标题的每个翻译单元都会尝试初始化静态变量,这不会发生,因此您会看到错误。