我一直在解决hackerrank问题。我遇到了一个虚函数问题,我被要求创建一个名为 Student 的类。这个类必须有一个名为 cur_id (当前 id)的 int 变量。这是类(class);

class Student: public Person{

    public:

    static int id;

    Student(){
        cur_id = ++id;
    }


};

int Student::id = 0;

我被要求在创建类的每个新对象时增加 cur_id +1。因此,我决定在构造函数中增加 cur_id。如您所见,我在类中将 static int 变量声明为 static int id 。然后我想用类中的 初始化它的值。但是当我尝试将它作为 Student::id = 0; 时,我无法访问 id 变量。我需要再次指定它的数据类型,就像我再次将变量声明为 int Student::id = 0; 一样。这是什么原因,为什么我需要两次声明一个静态变量?我知道这是一个新手问题,可能有一个简单的答案,但我无法在其他主题中找到答案。提前致谢。

最佳答案

第二次你不申报。你定义它。这就是为什么这通常在实现文件 (.cpp) 中完成而类声明在头文件 (.h) 中完成的原因。

关于c++ - 为什么在类外定义静态变量需要再次指定数据类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53703036/

10-14 15:24
查看更多