[問題] struct array傳遞問題

作者: cozychocolat (chocolate)   2018-01-10 03:02:48
開發平台(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] 的這種方式好像也不是很好
是否可教我改寫
作者: steve1012 (steve)   2018-01-10 03:41:00
和不用 vector<vector<maze>>
作者: kzeratal (Kz)   2018-01-10 04:04:00
二維陣列是兩個星星
作者: chuegou (chuegou)   2018-01-10 08:42:00
用指標傳
作者: Killercat (殺人貓™)   2018-01-10 09:53:00
也許當初語法糖這東西真的害人不淺 XD
作者: loveflames (咕啾咕啾魔法陣)   2018-01-10 15:10:00
如果不用STL,可以傳陣列的reference隨機輸入就不是嚴格意義的陣列了,請用vector
作者: steve1012 (steve)   2018-01-10 16:46:00
雖然不知道你到底想要做啥 不過會動的code https://ideone.com/Cq75my
作者: idiont (supertroller)   2018-01-10 21:52:00
傳array的時候只有最高維可以不用知道大小
作者: loveflames (咕啾咕啾魔法陣)   2018-01-10 22:11:00
因為那個實際上不是傳陣列,只是傳指標
作者: dzwei (Cout<< *p << \n ;)   2018-01-13 02:11:00
你函數宣告要寫成void check_consistent(struct Maze (* maze)[10],int y){ ... }那個10是maze[a][b]裡面的b,也就是array外層的大小參考本版C++新手13戒的第12條之所以要寫成struct Maze (* maze)是因為沒有那個括號的話就會變成(struct Maze *) maze兩者意義完全不一樣還有,我覺得check_consistent(maze, x, y);應該要放在for裡面其實前面x,y,num..那些沒有給初值,其實很危險一樣參考本版教條的第一條
作者: hunandy14 (Charlott.HonG)   2018-01-24 11:34:00
真要傳多多維度的不定陣列,可以用樣板https://ideone.com/M2JW64總體來說還是跟上面大大一樣,建議用vector省事~

Links booklink

Contact Us: admin [ a t ] ucptt.com