我正在制作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.
并执行类似第一个代码的操作。
建议中的Thx。
Edzio
答案 0 :(得分:0)
您可以使用std::vector<std::unique_ptr<Base>>
或。来估计多态集合。 std::vector<std::shared_ptr<Base>>
。
请注意,向量的复制语义不好,但您可能根本不会复制该级别。如果需要,最简单的方法是创建自己的智能指针并使用如上所述。
更重要的方法是编写一个真正的,一流的多态容器。
答案 1 :(得分:0)
您可以查看支持多态性的各种STL容器,并选择适合您需求的容器。在这种情况下,如@Balog Pal所述,std :: vector可能是最佳选择。
以下是有关C ++ STL容器选项的一些质量信息: