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++:我可以将子对象放入父对象数组中吗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章