1

我正在制作 TD 游戏,我想知道有没有办法让数组对象来自不同的类。类似于下面的代码

class A(base class){
  int x,y;
}
class B:A{
}
class C:A{
}

main(){
A a;
B b;
C c;
array[3];
array[0] = B b[12];
array[1] = C c[12];
foo(array[1]);
}

我想要实现的是让对象(我的地图上的生物)发挥作用,而不需要在功能中产生很多“ifs”。我只是想避免下面这样的代码。

if(All from B is dead)
 foo(C c[all elements])
else if(All from C is dead)
 foo(D d[all elements]);
etc.

并执行第一个代码之类的操作。

谢谢你的建议。

埃齐奥

4

2 回答 2

0

std::vector<std::unique_ptr<Base>>您可以使用或 来近似多态集合。std::vector<std::shared_ptr<Base>>.

请注意,向量的复制语义不好,但您可能根本不会在该级别上进行复制。如果需要,最简单的方法是创建自己的智能指针并像上面那样使用它。

较重的方法是编写一个真实的、一流的多态容器。

于 2013-06-18T23:15:12.073 回答
0

您可以查看支持多态性的各种 STL 容器,然后选择适合您需要的容器。在这种情况下,正如@Balog Pal 所述, std::vector 可能是最佳选择。

以下是有关 C++ STL 容器选项的一些质量信息:

http://www.cplusplus.com/reference/stl/

于 2013-06-18T23:23:57.573 回答