Re: [問題] 類別內指標指向自己

看板C_and_CPP (C/C++)作者 (Alien)時間16年前 (2009/12/10 16:30), 編輯推噓2(208)
留言10則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《hirabbitt (兔子)》之銘言: : 遇到的問題: (題意請描述清楚) : 我做了一個player的類別 : 傳入x與y要定位 : 之後想把這個物件的位置存到map[x][y]之中 : 所以一開始是這樣寫的 : player *map[][]; : player *p=new player(21,4); : map[21][4]=p; : 希望得到的正確結果: : 如果可以把map[21][4]=p;寫進player類別裡 : 就不用多一行來設定map[][]了 : 程式跑出來的錯誤結果: : 因為還不太清楚怎樣寫 : 所以沒有錯誤結果 : 硬要說的話 : 我在void player(int x,int y)之中寫了 : map[x][y]=this; : 然後沒過XD : 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) : Dev-C++ : 謝謝 幾樣東西你要考慮. 我姑且當你那個 map 是 "地圖" 首先把地圖包裝好一個 class, 會比較容易處理. 不然你傳那個 array 又得傳 那個2D array 的 1st dimension 才行, 看起來實在很麻煩.. 第二, 你設計 Player 的時候究竟傳不傳那個地 圖, 相比起是不是要 "多" 做一次位置設定, 更 重要的是你設計上 Player 是不是要 aware of 地圖. 假設你的 Player 是要面對地圖工作的 (比如你是叫 Player 向前一步, 然後 Player 自 己修改自己在地圖上的位置之類), 這麼 Player 要存著 Map 並對著它工作就很正常了. 但如果 Player 只是被操作的東西, 它根本 不需要對著 Map 工作, 只是為了省那句 code 而把 map 傳到 ctor 那就怪怪了, 我覺得你弄 一個factory method 之類去生成 player 順便 在裡面做那堆設定看起來比較合理. 一切都視乎你的設計才能決定. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 202.155.236.82

12/10 16:38, , 1F
謝謝你 我是想說 每次player移動 都要去更新他在地圖的
12/10 16:38, 1F

12/10 16:39, , 2F
位置 所以把地圖指標寫在player裡 可能比較方便
12/10 16:39, 2F

12/10 16:39, , 3F
new的時候只是放第一次的位置
12/10 16:39, 3F

12/10 16:40, , 4F
會這樣寫 是因為有很多player 假如對所有攻擊都搜尋所有
12/10 16:40, 4F

12/10 16:41, , 5F
player會比較慢(吧) 所以做一個地圖存起來 假如任何攻擊
12/10 16:41, 5F

12/10 16:42, , 6F
是對該點(21,4) 我只要去找那個map[21][4]指向的玩家攻
12/10 16:42, 6F

12/10 16:42, , 7F
12/10 16:42, 7F

12/10 16:52, , 8F
那麼 Player 本身有 refer to Map 這做法應該合理了 :)
12/10 16:52, 8F

12/10 16:53, , 9F
只是順帶建議把 Map 包成一個 class 比較好
12/10 16:53, 9F

12/10 17:03, , 10F
好~ 謝謝你
12/10 17:03, 10F
文章代碼(AID): #1B8B6za2 (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1B8B6za2 (C_and_CPP)