作者johnjohnlin (LYSin8)
看板EE_DSnP
標題[問題] #HW3 編譯時 link error
時間Mon Nov 8 20:29:19 2010
請問一下
我在 make 的時候
~$ make clean
(輸出略)
~$ make
(略)
> building modCalc...
../../lib/libcalc.a(calcCmd.o): In function `ModNum::setModulus(int)':
calcCmd.cpp:(.text._ZN6ModNum10setModulusEi[ModNum::setModulus(int)]+0x7):
undefined reference to `ModNum::_modulus'
(略)
static void setModulus(int m) { _modulus = m; }
可是 ModNum 的 private member 裡面有定義 _modulus 耶...
getModulus 也有一樣的 link error
大約 google 一下,找到了類似的解釋
http://stackoverflow.com/questions/2916759/
undefined-reference-to-static-member-variable
http://stackoverflow.com/questions/272900/
c-undefined-reference-to-static-class-member
可是不能改 data member,有什麼解決的方法?
/* 我在 calcModNum.h 的 global scope 加上 static int _modulus
* 然後再把 _modulus 加上 ::,這樣可以把錯誤壓制掉
* 可是這應該不是合理的解決方法
* 所以 PO 上來問一下...... */
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.243.89
※ 編輯: johnjohnlin 來自: 140.112.243.89 (11/08 20:29)
1F:→ johnjohnlin:還是說因為某些行被教授拿掉了,所以編譯不會過 11/08 20:42
2F:→ johnjohnlin:要我們自己補上去? 11/08 20:42
3F:推 cktigeryang:要在.cpp檔裡面initialize他 11/08 20:49
4F:→ tomap41017:cpp才init喔!!檔案有寫 11/08 21:17
5F:推 ggegge:要在cpp global scope initialize int ModNum::_modulus; 11/08 23:32
6F:推 TommyKSHS:因為那個變數是 static member 11/08 23:54
7F:推 ric2k1:感謝樓上各位的回答,希望大家都注意到這個問題! 11/09 13:00