2011-03-19 195 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; 
}