看板 EE_DSnP 關於我們 聯絡資訊
static data member 一定要在 global scope 被 initialized. 因為它必須在任何 class object 被 construct 之前就被 initialized. 所以必須要在任何 .cpp 檔不屬於任何 function 的 global scope: unsigned ModInt::_modulus = 0; 注意, 不要重複寫 "static" 喔! ※ 引述《ricky770927 (ricky)》之銘言: : 我寫: : #include<iostream> : using namespace std; : class ModInt : { : public: : ModInt(const int& i){_number=i;}; : static void setMod(unsigned i){_modulus=i;} : private: : unsigned _number; : static unsigned _modulus; : }; : void main() : { : int mod; : cout<<"Please enter the modulus (> 0): "<<endl; : cin>>mod; : while(mod<=0) : { : cout<<"Please enter the modulus (> 0): "<<endl; : cin>>mod; : } : ModInt a(5); : ModInt::setMod(mod); : } : 在build時出錯 : HW9.OBJ : error LNK2001: unresolved external symbol "private: static unsigned int ModInt::_modulus" (?_modulus@ModInt@@0IA) : Debug/HW9.exe : fatal error LNK1120: 1 unresolved externals : 到底是哪裡有問題? : 請幫我解答一下 謝謝!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.121.132.105
Davefox:感動,順便也解了我的問題 01/01 22:37
ricky770927:瞭解了!!謝謝 01/01 23:49