Почему нам нужно снова указывать тип данных, когда мы определяем статическую переменную вне класса - PullRequest
0 голосов
/ 10 декабря 2018

Я решал вопросы с хакерранками.Я столкнулся с вопросом о виртуальной функции, и меня попросили создать класс с именем Student .Этот класс должен иметь переменную int с именем cur_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 голосов
/ 10 декабря 2018

Второй раз вы не объявите это.Вы определяете это.Вот почему это обычно делается в файле реализации (.cpp), а объявление класса выполняется в заголовочном файле (.h).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...