プロジェクト内のさまざまなオブジェクトの位置を記述する構造があります。一部のオブジェクトは、2 つまたは 3 つなどのインデックスでインデックス付けされます。
この簡単な例では、3 種類の position を示しA
てB
おり、それらはすべて空であるC
から継承しています。引数をとる関数でこれらの位置を渡すことができるように、Position
から継承します。単一の構造体を使用しない理由は、その中にすべてのメンバーを配置する必要がある
ためです。ほとんどの場合、一部のオブジェクトについては、次のように使用し
ます。Position
Position
Position
int a,b,c,d
a
b
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
ますか? そして、私はそれをする必要があります。