こんにちは、配列に格納されている派生型を失うことなく、基本型の 2 次元配列内に派生型オブジェクトを格納することに小さな問題があります。
たとえば、次の Base クラスと Derived クラスがあります。
class Base{
}
class Derived: public Base{
}
次のように Base オブジェクトを作成するポイントがあります。
Base objectB;
次に、次のように、上記のオブジェクトを Derived クラスの型にキャストします。
Base *referencePointer = &objectB;
Derived *derivedPointer = static_cast<Derived*>(referencePointer);
この時点で、すべてが正しく機能しています (derivedPointer の型を出力すると、それは Derived 型です)。
これで、タイプ Base クラスの 2 次元配列が次のように初期化されました。
Base *baseArray[5][5];
ここで、次のように、derivedPointer 値を配列に入力します。
baseArray[x][y] = derivedPointer;
これは、referencePointer に格納するときに問題が発生する場所ですが、Base 型 (オブジェクトのスライス) になり、referencePointer 値を格納してその型を Base 型の配列内に保持する方法がわかりません。
どんな助けでも大歓迎です、
ありがとうございました!