Инициализация членов статического класса - PullRequest
1 голос
/ 19 марта 2011

Если я пытаюсь инициализировать obj_s, он просит меня сделать его const - и я не могу этого сделать, потому что мне приходится вести подсчет моих Созданных объектов.

#include<iostream>

class A
{
        static int obj_s=0;
public: 
        A(){ ++obj_s;cout << A::obj_s << "\nObject(s) Created\n"; }
}; 

int main()
{
A a,b,c,d;
}    

Код ниже сохраняетдавая мне следующую ошибку:

  [Linker error] undefined reference to `A::obj_s' 

1 Ответ

5 голосов
/ 19 марта 2011

[Решено]

Код выдает ошибку, потому что объект не создается во втором случае, а в первом он не инициализируется, как предполагалось - Вот фиксированный код:

#include<iostream>
class A
{
        static int obj_s;
public: 
        A()
{  obj_s++;  std::cout << A::obj_s << "\nObject(s) Created\n" ;  }
}; 

int A::obj_s=0;  // This is how you intialize it

int main()
{
A a ,b,c,d;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...