Re: [問題] class有static變數編譯不過

看板Programming作者 ( )時間18年前 (2007/08/11 23:06), 編輯推噓4(402)
留言6則, 3人參與, 最新討論串2/2 (看更多)
※ 引述《FreeF1y2 (FreeF1y2)》之銘言: : 我用g++ 3.4.6編譯以下程式碼 : class TestClass { : public: : static int a; : }; : int main() { : TestClass c; : c.a = 3; : } int TestClass::a; // 要在外面補上定義式。 : /var/tmp//cc2UNSTJ.o(.text+0x1e): In function `main': : : undefined reference to `TestClass::a' ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 要學會看懂 error message 才行, 這裡就是 a 沒定義所造成的 linking-time error。 -- Ling-hua Tseng (uranus@it.muds.net) Department of Computer Science, National Tsing-Hua University Interesting: C++, Compiler, PL/PD, OS, VM, Large-scale software design Researching: Software pipelining for VLIW architectures Homepage: https://it.muds.net/~uranus -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.230.225.100

08/11 23:13, , 1F
喔喔可以了 太感謝您了
08/11 23:13, 1F

08/11 23:15, , 2F
不過為什麼static成員要另外定義呢
08/11 23:15, 2F

08/12 00:24, , 3F
定義該成員所屬的scope? 我也很想知道...
08/12 00:24, 3F

08/12 04:54, , 4F
static data member 性質跟 global var
08/12 04:54, 4F

08/12 04:55, , 5F
類似,程式啟動時就要佔據一個空間,所以
08/12 04:55, 5F

08/12 04:55, , 6F
需要在某處定義它,以配置靜態空間給它。
08/12 04:55, 6F
文章代碼(AID): #16lT26lm (Programming)
討論串 (同標題文章)
文章代碼(AID): #16lT26lm (Programming)