看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: Win10, Linux, ...) Windiw 7 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) CodeBlock 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) none 問題(Question): 我想要將一個結構陣列傳進副程式 並在副程式當中作一些判斷 但是當我傳入並想做一些簡單的測試時 就發生錯誤了 希各位大大能幫忙解惑 感恩 錯誤結果(Wrong Output): 錯誤資訊 no match for 'operator[]' (operand types are 'Maze' and 'int') 程式碼(Code):(請善用置底文網頁, 記得排版) https://ideone.com/LE97Ei 補充說明(Supplement): 我 Maze maze[x+1][y+1] 的這種方式好像也不是很好 是否可教我改寫 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 106.1.226.182 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1515524572.A.9F9.html
steve1012: 和不用 vector<vector<maze>>01/10 03:41
因為新手還是覺得array最直觀 哈哈 晚點來試試 vector
kzeratal: 二維陣列是兩個星星01/10 04:04
但是我改成這樣 https://ideone.com/q3tsem 還是會有錯 錯誤訊息:cannot convert Maze (*)[(y + 1)] to‘Maze** for argument‘1' to‘ void check_consistent(Maze**, int, int)’ 是不是跟我array大小是變動的有關
chuegou: 用指標傳01/10 08:42
請問我這樣不是用指標傳嗎 還是我哪裡誤會了
Killercat: 也許當初語法糖這東西真的害人不淺 XD01/10 09:53
loveflames: 如果不用STL,可以傳陣列的reference01/10 15:10
但是據我所知 call by reference 他的陣列大小要是固定的 但是我的陣列大小是讓使用者隨機輸入的 這樣可以嗎 ※ 編輯: cozychocolat (140.114.79.52), 01/10/2018 16:05:52
loveflames: 隨機輸入就不是嚴格意義的陣列了,請用vector01/10 16:17
好的 我會試試
steve1012: 雖然不知道你到底想要做啥 不過會動的code https://ide01/10 16:46
steve1012: one.com/Cq75my01/10 16:46
真的是太感謝了 我會好好研究 ※ 編輯: cozychocolat (140.114.79.52), 01/10/2018 16:56:40
idiont: 傳array的時候只有最高維可以不用知道大小01/10 21:52
loveflames: 因為那個實際上不是傳陣列,只是傳指標01/10 22:11
dzwei: 你函數宣告要寫成01/13 02:11
dzwei: void check_consistent(struct Maze (* maze)[10], 01/13 02:11
dzwei: int y){ ... }01/13 02:11
dzwei: 那個10是maze[a][b]裡面的b,也就是array外層的大小01/13 02:12
dzwei: 參考本版C++新手13戒的第12條01/13 02:13
dzwei: 之所以要寫成struct Maze (* maze)是因為沒有那個括號的話01/13 02:13
dzwei: 就會變成(struct Maze *) maze01/13 02:14
dzwei: 兩者意義完全不一樣01/13 02:14
dzwei: 還有,我覺得check_consistent(maze, x, y);01/13 02:15
dzwei: 應該要放在for裡面01/13 02:15
dzwei: 其實前面x,y,num..那些沒有給初值,其實很危險01/13 02:16
dzwei: 一樣參考本版教條的第一條01/13 02:17
感謝以上各位大師的講解 我後來就改用vector寫了 也謝謝dzwei大最後給的建議 感謝各位幫忙 ※ 編輯: cozychocolat (106.1.226.182), 01/14/2018 03:16:15
dzwei: 勘誤一下 01/14 03:53
dzwei: 「maze[a][b]裡面的b」 01/14 03:53
dzwei: 那個b是內層 01/14 03:53
hunandy14: 真要傳多多維度的不定陣列,可以用樣板 01/24 11:34
hunandy14: https://ideone.com/M2JW64 01/24 11:34
hunandy14: 總體來說還是跟上面大大一樣,建議用vector省事~ 01/24 11:36