2017-01-13 12 views
1

は私がC++:親オブジェクトの配列に子オブジェクトを置くことはできますか?

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

「タイル」と呼ばれるクラスを持ち、インスタンスが作成するために「タイル」

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

を拡張して「ドア」と呼ばれるクラスは、私は、タイルオブジェクトの配列を作ることができると言いますそして、それはTileの拡張であるので、同じ配列のDoorオブジェクトを持っていますか?そうでない場合は、これを達成するために私が使用できる代替手段がありますか?

答えて

1

親オブジェクトの配列に子オブジェクトを配置できますか?

タイプTのオブジェクトは、常にタイプTのであり、決して別のタイプ、そのタイプが関連している場合でも。配列には常に単一の型のオブジェクトが含まれます。

これを行うために使用できる代替手段がない場合は、

T&

リファレンスポインタT*は、そのタイプTから派生したオブジェクトを参照することができます。しかし、配列に参照を格納することはできません。したがって、ポインタの配列を使用することができます。

おそらく最も簡単かつ柔軟な選択が共有ポインタの配列である:

std::shared_ptr<Tile> tiles[10]; 
関連する問題