静态类成员的初始化

Sad*_*que 1 c++ visual-c++ c++11

如果我尝试初始化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;
}    
Run Code Online (Sandbox Code Playgroud)

下面的代码一直给我以下错误:

  [Linker error] undefined reference to `A::obj_s' 
Run Code Online (Sandbox Code Playgroud)

Sad*_*que 5

[解决了]

代码正在给出错误,因为在第二种情况下没有创建对象,并且在第一种情况下它没有初始化,它应该采用的方式 - 这是固定代码:

#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;
}
Run Code Online (Sandbox Code Playgroud)