首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何创建一个数组,其中的类型是抽象的,但对象将是派生类(C++)

如何创建一个数组,其中的类型是抽象的,但对象将是派生类(C++)
EN

Stack Overflow用户
提问于 2012-12-03 06:20:16
回答 2查看 73关注 0票数 2

我的问题是,我需要能够创建一个包含100个对象的数组。但是,这些对象可以是四个不同对象中的一个,所有这些对象最终都派生自一个抽象类。我可以使用4个独立的数组,但似乎我的老师只想让我们使用一个数组。

类结构是: DVD和VHS派生自视频,CD和卡带派生自音频,音频和视频派生自媒体。音频、视频和媒体都是抽象的。

EN

回答 2

Stack Overflow用户

发布于 2012-12-03 06:23:10

你必须使用指针。不能复制或分配派生类型,至少不能通过基类型的声明。

票数 2
EN

Stack Overflow用户

发布于 2012-12-03 07:05:49

对于数组-类型的大小必须是已知的(为了保留连续内存)-类型不能是抽象类(对于初始化类必须是可实例化的)

数组的唯一解决方案是使用指针间接,因为指针的大小是已知的。您可以使用原始指针或智能指针指向基类。当使用原始指针时,在删除数组之前必须注意对象的销毁。当数组本身驻留在堆中时,不要忘记delete []

为了克服这些问题,应该在smart pointer中使用一个标准的类似container的向量。只有这样,容器的简单删除才会删除所有媒体对象。如果容器应该驻留在堆上,那么您也应该使用智能指针来保存它。

让自己熟悉这两个概念。如果您不知道哪种类型是最好的,请使用vector和shared_ptr,直到您了解得更清楚为止。

忘了说: vector你可以在标准库中找到,shared_ptr你只能在C++11编译器中找到。如果您使用的是旧版编译器,则必须包含boost libraries

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13674552

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档