作者adrianshum (Alien)
看板C_and_CPP
標題Re: [問題] 類別內指標指向自己
時間Thu Dec 10 16:30:50 2009
※ 引述《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
推 hirabbitt:謝謝你 我是想說 每次player移動 都要去更新他在地圖的 12/10 16:38
→ hirabbitt:位置 所以把地圖指標寫在player裡 可能比較方便 12/10 16:39
→ hirabbitt:new的時候只是放第一次的位置 12/10 16:39
→ hirabbitt:會這樣寫 是因為有很多player 假如對所有攻擊都搜尋所有 12/10 16:40
→ hirabbitt:player會比較慢(吧) 所以做一個地圖存起來 假如任何攻擊 12/10 16:41
→ hirabbitt:是對該點(21,4) 我只要去找那個map[21][4]指向的玩家攻 12/10 16:42
→ hirabbitt:擊 12/10 16:42
→ adrianshum:那麼 Player 本身有 refer to Map 這做法應該合理了 :) 12/10 16:52
→ adrianshum:只是順帶建議把 Map 包成一個 class 比較好 12/10 16:53
推 hirabbitt:好~ 謝謝你 12/10 17:03