プロジェクト内のさまざまなオブジェクトの位置を記述する構造があります。一部のオブジェクトは、2 つまたは 3 つなどのインデックスでインデックス付けされます。
この簡単な例では、3 種類の position を示しAてBおり、それらはすべて空であるCから継承しています。引数をとる関数でこれらの位置を渡すことができるように、Positionから継承します。単一の構造体を使用しない理由は、その中にすべてのメンバーを配置する必要がある
ためです。ほとんどの場合、一部のオブジェクトについては、次のように使用し
ます。PositionPositionPositionint a,b,c,dab
struct Position {
};
struct A : public Position {
int a,b,c,d;
};
struct B : public Position {
int a,b,c;
};
struct C : public Position {
int a,b;
};
問題は、次のような関数があることです。
City &getCity(const Position &p) {
const B &pos = (const B &)p;
return rawSheets[pos.a].countries[pos.b].cities[pos.c];
}
Bこの関数に型の位置を渡せばすべて問題ありませんが、型を渡すとどうなりAますか? そして、私はそれをする必要があります。