首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C++是否在数组中存储任何子结构/类?

C++是否在数组中存储任何子结构/类?
EN

Stack Overflow用户
提问于 2013-04-18 11:20:16
回答 3查看 1.9K关注 0票数 2

在C++中,我定义了一系列结构...

代码语言:javascript
运行
复制
struct Component {};
struct SceneGraphNode : Component {};
struct Renderable : Component {};
struct Health : Component {};

这些很容易成为类,我被告知在C++中几乎没有什么不同。

在Java语言中,可以声明一个Component类型的数组,并将任何从(继承) Component扩展的类放入其中。Java认为它们都是组件,因为一切都使用智能指针,Java的“数组”实际上只是一组大小相同的智能指针。

然而,我知道Java处理数组与C++有很大的不同。当我检查每个结构的大小时,我得到了以下结果。

代码语言:javascript
运行
复制
Component                   // 4
SceneGraphNode : Component  // 8
Renderable : Component      // 8
Health : Component          // 20

这并不令人惊讶。现在,当我创建一个组件数组时,块的大小显然将是4(字节),这将无法容纳任何其他结构。

所以我的问题是,如何存储Components的松散列表(即可以存储从组件继承的任何类/结构的列表)?在Java中,这是非常简单的。当然,在C++中肯定有一种简单的方法可以做到这一点。

EN

Stack Overflow用户

发布于 2013-04-18 11:24:49

您可以按如下方式存储它们

代码语言:javascript
运行
复制
std::vector<Component *> components;
Component * c = new Health;
components.push_back( c );

调用components[0] -> method();将调用Healthmethod()

这就是在C++中实现多态性的方式。

还要确保组件的method()virtual

票数 1
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16073912

复制
相关文章

相似问题

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