gpt4 book ai didi

C++将类的对象保存在数组中

转载 作者:太空宇宙 更新时间:2023-11-04 14:05:28 24 4
gpt4 key购买 nike

我正在制作 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]);
}

我想要实现的是让对象(我 map 上的生物)正常运行,而不用在函数中加入很多“如果”。我只是想避免像下面这样的代码。

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

然后做一些类似于第一个代码的事情。

谢谢你的建议。

埃齐奥

最佳答案

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

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

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

关于C++将类的对象保存在数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17180488/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com