我理解指針和引用的基礎知識,但我所面臨的最大問題是在決定何時應該使用(以及哪些)。我會給出的主要例子是基本遊戲之一。假設的設置是這樣的:類指針與參考
- 新的世界
- 相機
- 地圖
世界是一個指針,因爲每次遊戲開始一個新的保存或加載現有一,它刪除世界並加載一個新的。但在世界範圍內,只有一個相機和地圖的存在應該存在,並且只存在於世界的時間。如果世界被摧毀,那麼他們顯然也應該如此。然而..讓讓Map需要訪問攝像頭(但其他對象也是如此),Camera是否應該通過引用傳遞給Map或作爲指針,或者?舉例來說,如果它應該是通過引用,它應該是:
map = Map(&camera);
(inside map class) Map(Camera camera) {...}
還是更喜歡:
map = Map(camera);
(inside map class) Map(Camera &camera) {...}
而且,可以說地圖擁有瓷磚稱爲網格的2D矢量。喜歡的東西:
std::vector< std::vector<Tile> > > grid;
現在可以說,我有需要該網格傳入探路類它需要直接編輯瓦片改變F,G等值(尋路)。該2D矢量是否應該是Tile的正常2D矢量,並且整個事情是通過引用PathFinder傳遞的?還是應該是Tile指針的2D矢量?此外,NPC和玩家將有一個currentTile,這是他們當前所在的圖塊。他們將需要有一個引用或指針的瓷磚,使他們也可以通過這樣的人大/播放器類中設置自己爲對瓷磚乘員:
currentTile = tile;
currentTile->SetOccupant(this);
其他關心進來當我再銷燬該網格以加載新地圖,我如何輕鬆處理,確保沒有任何內容指向不再存在的Tiles。我只需循環這些類並將currentTile設置爲NULL?
這是我開始真正被這個東西弄糊塗的地方。 任何幫助表示讚賞,因爲我顯然非常nooby。 @ _ @; 對不起,如果這不是真的遊戲相關主題。如果它需要移動到不同的堆棧交換,請讓我知道或移動它(如果可以的話)。 > _ <
被認爲屬於StackOverflow,因爲這實際上是一個關於C++最佳實踐的問題。在附註中,2D網格的矢量矢量非常糟糕;只需使用一個矢量並手動計算其內部的偏移量(或者編寫一個簡單的包裝)。 –
@SeanMiddleditch感謝向量載體的提示。沒有意識到這是不好的。只是做了一個接口,我的瓷磚網格計算偏移量,所以它只是一個向量。 ^^; – Zyaga