2011-03-19 114 views
1

如果我尝试初始化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' 

回答

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; 
}