[問題] 在CLASS中動態配置二維陣列錯誤

看板C_and_CPP作者 (機會稍縱即逝)時間12年前 (2013/04/18 04:37), 編輯推噓3(301)
留言4則, 4人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) dev c++ 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) iostream 問題(Question): 一開始不會配置未知長度*已知長度的陣列,所以另外開一個原始碼來測試, 好不容易測試成功,要丟回CLASS用的時候就爆炸了。 餵入的資料(Input):預期的正確結果(Expected Output): 編譯成功 錯誤結果(Wrong Output): non-static data member initializers only available with -std=c++11 or -std=gnu++11 程式碼(Code):(請善用置底文網頁, 記得排版) 首先是自己測試成功的版本,建立一個二維陣列來儲存輸入的字。 #include<iostream> using namespace std; int main() { int i; char (*ab)[20] = new char [i][20]; for (i = 0; cin.getline(ab[i],20); i++) { for (int j = 0; j < 20; j++) cout << ab[i][j]; cout << endl; } delete [] ab; return 0; } 然後是丟回CLASS爆炸的版本。 #include<iostream> using namespace std; static const int MAXEVAL = 20; static int i; class test { private: char (*emessage)[MAXEVAL] = new char [i][MAXEVAL]; } 補充說明(Supplement): 我剛學c++不久,很多基本常識都不太懂,有嘗試google過錯誤原因, 但是感覺都沒回答到我的問題,不知是否在class無法這樣配置二維陣列, 還是有別種寫法可以取代? 程式主要的功能是能夠一次輸入一列文字,儲存在陣列後以另外的指令一次顯示出來, 並且可隨時增加輸入,因此需要動態配置。由於編譯時就發生錯誤,所以其他程式碼 就沒另外打出來了。 有請版上高手指導,謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.37.100.166 ※ 編輯: poi1111 來自: 114.37.100.166 (04/18 04:49)

04/18 06:41, , 1F
配置空間要寫在 class constructor裡面
04/18 06:41, 1F

04/18 09:08, , 2F
第一個的i沒有初始化
04/18 09:08, 2F

04/19 04:39, , 3F
第一個i沒給值 這樣宣告為什麼不會爆炸?誰能說明一下?
04/19 04:39, 3F

04/19 11:57, , 4F
運氣好而已
04/19 11:57, 4F
文章代碼(AID): #1HRmWSeO (C_and_CPP)