代码中的静态变量

时间:2017-12-10 20:58:18

标签: c++ time static int keyword

经过一些研究后,我很惊讶地发现我还没有找到这样的问题,我只是想知道为什么我不能为静态变量赋值?

注意我没有使用任何标题我只是在一个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;
};

2 个答案:

答案 0 :(得分:1)

如果您问如何在c ++中执行此操作,那么

//.h
class Rabbit
{
public:
    static int now;

};

//.cpp
int Rabbit::now = 4;

答案 1 :(得分:1)

  

我只是想知道为什么我不能为静态变量赋值?

您当然可以将任何您想要的值分配给静态变量。您只是不在类定义本身中分配它。原因是您无法多次初始化static变量!如果您被允许在类定义中初始化它,那将是有问题的。

  

我没有使用任何标题我只是在一个cpp文件中创建一个类(我知道不是很好的做法)

右。好吧,如果你使用标题,你会发现为什么static类定义中的变量初始化会有问题。包含标题的每个翻译单元都会尝试初始化静态变量,这不会发生,因此您会看到错误。