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

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

class Tile 
{
    private:
        int x, y;
};

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

class Door : Tile
{
    private:
        bool open;
};

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

【问题讨论】:

    标签: c++ arrays parent-child


    【解决方案1】:

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

    没有。

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-27
      • 1970-01-01
      • 2020-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-30
      • 1970-01-01
      相关资源
      最近更新 更多