gpt4 book ai didi

包含派生类型的基类的 C++ vector

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

我有几个类 DemandBuildingFactoryFarm 和其他一些类。我想将这些实例存储在一个二维数组中,我通过创建一个基类 Building 来做到这一点,它什么都不做,但允许我这样做:(请注意,第二个 vector 是因为它是一个二维 vector ,用于存储这些 map 上的建筑物)

vector<vector<Building*> > map;

取而代之的是:

vector<vector<DemandBuilding*> > demand_buildings;
vector<vector<Factory*> > factories;
vector<vector<Farm*> > farms;
//etc...

(我不在电脑旁,所以我不确定这是不是合法的 C++,尽管我认为是)在我看来,这似乎是对继承的错误使用,对吧?

编辑:感谢您的帮助,这在概念上没有任何问题,但我后来意识到这样做对我的情况没有帮助,无论如何谢谢。

最佳答案

从概念上讲,这没有任何问题 - 这完全取决于您如何使用它。如果您发现自己不得不施放很多次,您可能需要重新考虑设计。

此外,您很可能应该有一个虚拟析构函数,如果您删除一个 Building * 并且该析构函数不是虚拟的,则子类析构函数不会执行

关于包含派生类型的基类的 C++ vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5283141/

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