2016-04-03 67 views
-1

我正在製作一個ascii遊戲,其中有很多類符號對應於類。如何製作與對象相對應的字符列表

例如#= wallTile

現在,我想使瓷磚類,這樣我可以閱讀文本文件映射到2D焦矢量,創建從瓷磚的對象。 Tileobjects在setter中使用了一個函數,如「getTileBehaviourPerSymbol(char symbol)」

現在我正要啓動一個switch case,但肯定有更好的方法。 該函數應該瀏覽一些list/vector/enum/array idk,其中有可瀏覽的字符對應於一個類的類型。

這是如何在C++中完成的?

+0

一種方法是使用'的std :: map'。 –

回答

1

是啊,使用的std ::地圖這樣例如

#include <map> 

//Assuming each object in your game inherits from a base class 
std::map<char, Object> foo. 

Object getObjectBySybol(char c) {return foo[c]}; 

希望這將清除的東西了: http://www.cplusplus.com/reference/map/map/

+0

除了在查詢地圖時不會使用'operator []',因爲它不是const友好的。你會用'at()' –

+0

@Cameron Bell我還沒有得到它,儘管一張地圖看起來正是我所需要的,Visual Studio告訴我:「當我想聲明這個時,類型名稱是不允許的」:std :: map tileTypeMap {{'#',TileTypeWall}};'(TileTypeWall派生自TileType) – t0b4cc0