[問題] 列印class中的string

看板C_and_CPP (C/C++)作者 (Lucius)時間16年前 (2010/05/25 17:08), 編輯推噓3(306)
留言9則, 3人參與, 最新討論串1/1
遇到的問題:想透過建構子初始化陣列 *month[12]={"Jan", ...,"Dec"} 然後由成員函式print出這些月份字串 希望得到的正確結果:依序印出 month Jan month Feb ... month Dec 程式跑出來的錯誤結果: month 亂碼 且多跑幾行後會出現程式錯誤要求關閉 但若將*month[12]宣告在printSale中 則可以正確列印, 煩請幫忙解惑, 謝謝! 開發平台:Dev-C++ 有問題的code: ==============header class Sale{ public: Sale(); void printSale(); private: const char *month[12]; }; ==============.cpp Sale::Sale(){ const char *month[12] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"}; } void Sale::printSale() { for(int i=0; i<12; i++) { cout<< "month month[i]"<<endl; } } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.69.128.66

05/25 17:12, , 1F
建構子不是const嘛 要用initialization list吧 待我試試
05/25 17:12, 1F

05/25 17:14, , 2F
不過妳的cout應該是要 cout<<"month "<<month[i]<<endl;
05/25 17:14, 2F

05/25 17:23, , 3F
我沒用過 不過我覺得直接把字串丟給const char*怪怪的
05/25 17:23, 3F

05/25 17:23, , 4F
待強者補充 我個人是想為什麼不直接用string[12] XD
05/25 17:23, 4F

05/25 17:25, , 5F
你ctor 裡面初始化的是區域變數, 跟外面的指標陣列無
05/25 17:25, 5F

05/25 17:26, , 6F
關, 既然都寫C++了, 你就用一個string array, 或是
05/25 17:26, 6F

05/25 17:27, , 7F
container 來裝, 不然要初始化這樣的陣列, 應該用
05/25 17:27, 7F

05/25 17:27, , 8F
static data member 的初始化方式, 這樣也比較合理
05/25 17:27, 8F

05/26 08:58, , 9F
謝謝指教!
05/26 08:58, 9F
文章代碼(AID): #1B-vEOuu (C_and_CPP)
文章代碼(AID): #1B-vEOuu (C_and_CPP)