带有多个对象的c ++数组

时间:2014-02-05 18:22:07

标签: c++ object struct multidimensional-array

所以我创建了一个简单的游戏地图,初始化如下:

char map[MAP_SIZE][MAP_SIZE];

现在,正如你所看到的,现在只是char。问题是,我希望地图代替不同类型的对象。这是我到目前为止所做的,但我想看看是否有更有效的方式(可能存在)。

class Treasure{};
class Chest{};
class Enemy{};
class Grunt : public Enemy{};
class Lieutenant : public Enemy{};
class Boss : public Enemy{};
class Final_Boss : public Enemy{};
class Secret_Room{};
class Map_Level{};

struct Entity
{
   char display_char; //Simple character that is displayed on the the map
   Treasure *t;
   Chest *c;
   Grunt *g;
   Lieutenant *l;
   Boss *b;
   Final_Boss *f;
   Secret_Room *s;
   Map_Level *u;
   Map_Level *d;
};

Entity map[MAP_SIZE][MAP_SIZE];

我考虑过只检查display_char并根据它是什么,只是删除我不需要的对象指针,但这似乎是很多不必要的工作。我希望这个问题足够清楚,并希望得到任何帮助,找出最佳方法。

1 个答案:

答案 0 :(得分:0)

假设每个map条目只需要一个敌人,你可以只拥有Enemy *,而不是拥有Grunt, Lieutenant的整个列表等。