作者ric2k1 (Ric)
看板EE_DSnP
標題Re: [問題] hw#6的fake screensaver
時間Tue Dec 2 21:26:32 2008
※ 引述《james0419 (阿富)》之銘言:
: 我的程式大概完成了
: 只是很遺憾的是他compile沒有過
: 我有點看不太懂他的error message
: 他的error message 如下:
: 33 F:\黃鐘揚\homework6\main3.cpp cannot convert `char (*)[80]' to
: `char**' in argument passing
: 老師說可以傳一個double pointer 進去一個function
: 但是他怎麼說不能將char[][80]轉換成char**
: 以下附上小弟的程式碼:
: .....
: char** (*move[4])(char**,int , int)={downLeft,downRight,upRight,upLeft};
You cannot pass in a 2D static array to a double pointer.
Please review Lecture note #4. The memory allocations of 2D array and double
pointer are different.
(用 BBS 太難畫了... 我上課有畫過)
Try pass in char [][80] or char [][NUM_ROWS]
: char** downLeft(char**,int, int);
: char** downRight(char**,int, int);
: char** upLeft(char**,int, int);
: char** upRight(char **,int ,int);
^^^^^^^
similarly, change the argument type here
: ...
: int main(){
: while(bounceCount<100){
: printScreen();
: bounceCheck(row,column);
: (*move[goDirection])(*&screen,row,column); <-就是這一行出了問題...
^^
Why *&? Why not just pass in screen?
: }
: }
: //end main.cpp
BTW, row & column 不是用 #define 成 NUM_ROWS & NUM_COLS 嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.121.129.104