C++:我可以将子对象放入父对象数组中吗? [复制]

Posted

技术标签:

【中文标题】C++:我可以将子对象放入父对象数组中吗? [复制]【英文标题】:C++: Can I put a child object into an array of parent objects? [duplicate] 【发布时间】:2017-01-13 22:17:59 【问题描述】:

假设我有一个名为“Tile”的类

class Tile 

    private:
        int x, y;
;

还有一个名为“门”的类,它扩展了“瓷砖”

class Door : Tile

    private:
        bool open;
;

我可以创建一个 Tile 对象数组,例如创建一个房间,然后在同一个数组中包含一个 Door 对象,因为它是 Tile 的扩展?如果没有,我可以使用其他方法来完成此操作吗?

【问题讨论】:

【参考方案1】:

我可以将子对象放入父对象数组中吗?

没有。

T 类型的对象始终是 T 类型,永远不会是其他类型,即使该类型是相关的。数组总是包含一种类型的对象。

如果没有,我可以使用任何替代方法来完成此操作吗?

引用T& 和指针T* 可以引用其类型派生自T 的对象。但是,您不能将引用存储在数组中。所以,你可以使用一个指针数组。

也许最简单和最灵活的选择是共享指针数组:

std::shared_ptr<Tile> tiles[10];

【讨论】:

以上是关于C++:我可以将子对象放入父对象数组中吗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

实体框架 6:将子对象添加到父列表与将子对象的导航属性设置为父对象

将子对象从 JSON 绑定到父属性 java

我可以将关联数组放入要在 PHP 中处理的表单输入中吗?

如何在 C++ 中的子类中创建父对象数组?

将子对象添加到表中 当父对象保存到上下文中时

js 数组的indexOf可以判断对象数组中的对象有没有在数组中吗