C++ 靜態變量初始化 “undefined reference”

靜態變量 undefined reference 

1. c++頭文件, 類中定義static 變量,不要在頭文件內類外做初始化(頭文件被多次包含,會引起多重定義)也不能在構構函數內初始化。

(1.對於類中的靜態成員是單獨存儲的,而不是對象的組成部分, 初始化語名指出了類型,並使用了作用域運算符,但並沒有使用關鍵字static;

2. 初始化應該放在方法文件中,而不是類聲明文件中進行,因類聲明位於頭文件中,程序可能將頭文件包含在其他幾個文件中。如果在頭文件中進行初始化,將出現多個初始化語句的副本,從而引發錯誤.

3. 對於不能在類聲明中初始化靜態成員的一種例外情況是,靜態數據成員爲整型或枚舉型const.

 

2.  static 變量在cpp中初始化,且在{}外實始化;

test.hxx

class CTest{

     public:

         static int a;

};

test.cpp

int CTest::a = 0;

int main(){}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章