我想要一個簡單的類,我可以調用,以獲得一個唯一的編號,而程序正在運行 - 我可以做下面的動態分配,然後只是delete
需要,但我仍然想要得到一個static
版本。 奇怪的是,下面的代碼(這看起來很簡單)會拋出一些奇怪的錯誤(下面附加)。C++在一個類中的靜態int - 編譯時錯誤
任何想法是怎麼回事?這是一個不正確的使用靜態?
class Id_gen {
private:
//adding static here stops the code from compiling:
static int curr_id;
public:
Id_gen() {curr_id = 1; cout<<"debug:constructed"; }
int get_id() {curr_id++; return curr_id; };
};
int main() {
Id_gen bGen;
cout << bGen.get_id() <<endl;
return 0;
}
運行克++(Linux的64):
c++2.cpp:(.text._ZN6Id_genC1Ev[Id_gen::Id_gen()]+0xe): undefined reference to `Id_gen::curr_id'
/tmp/cc766N6p.o: In function `Id_gen::get_id()':
c++2.cpp:(.text._ZN6Id_gen6get_idEv[Id_gen::get_id()]+0xa): undefined reference to `Id_gen::curr_id'
c++2.cpp:(.text._ZN6Id_gen6get_idEv[Id_gen::get_id()]+0x13): undefined reference to `Id_gen::curr_id'
c++2.cpp:(.text._ZN6Id_gen6get_idEv[Id_gen::get_id()]+0x19): undefined reference to `Id_gen::curr_id'
這些是鏈接錯誤,不是編譯錯誤。 – TheJuice 2010-05-11 09:04:30
這些是鏈接器錯誤,而不是編譯時錯誤。這個區別很重要 - 特別是一旦你開始在團隊中工作併爲你的同事創建圖書館。 – 2010-05-11 09:07:00