I've been solving hackerrank questions. I've encountered with a virtual function question and I've been asked to create a class named Student . This class must have a int variable named cur_id ( current id). Here is the class;
class Student: public Person{
public:
static int id;
Student(){
cur_id = ++id;
}
};
int Student::id = 0;
I've been asked to increase the cur_id +1 while every new object of the class is being created. So that, i decided to increase the cur_id
in the constructor. As you can see, I've declared a static int
variable in the class as static int id
. Then I wanted to initialize its value with zero out of the class. But when I tried it as Student::id = 0;
, I couldn't access the id
variable. I needed to specify its datatype one more time like I am declaring the variable again as int Student::id = 0;
. What's the reason of it, why do I need to declare a static variable two time ? I know that it's a newbie question and may have an easy answer, but I couldn't find my answer in another topics. Thanks in advance.