在类之外

时间:2018-12-10 09:47:16

标签: c++ oop static

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

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;一样。这是什么原因,为什么我需要两次声明一个静态变量?我知道这是一个新手问题,可能会有一个简单的答案,但是我在其他主题中找不到答案。预先感谢。

1 个答案:

答案 0 :(得分:8)

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