作者jehovah (Lucius)
看板C_and_CPP
標題[問題] 列印class中的string
時間Tue May 25 17:08:37 2010
遇到的問題:想透過建構子初始化陣列 *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
推 nowar100:建構子不是const嘛 要用initialization list吧 待我試試 05/25 17:12
推 nowar100:不過妳的cout應該是要 cout<<"month "<<month[i]<<endl; 05/25 17:14
→ nowar100:我沒用過 不過我覺得直接把字串丟給const char*怪怪的 05/25 17:23
→ nowar100:待強者補充 我個人是想為什麼不直接用string[12] XD 05/25 17:23
推 loveme00835:你ctor 裡面初始化的是區域變數, 跟外面的指標陣列無 05/25 17:25
→ loveme00835:關, 既然都寫C++了, 你就用一個string array, 或是 05/25 17:26
→ loveme00835:container 來裝, 不然要初始化這樣的陣列, 應該用 05/25 17:27
→ loveme00835:static data member 的初始化方式, 這樣也比較合理 05/25 17:27
→ jehovah:謝謝指教! 05/26 08:58