看板 C_and_CPP 關於我們 聯絡資訊
遇到的問題:想透過建構子初始化陣列 *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