2 つのクラスがあります。
class A
{
private:
double a1, a2;
...
};
class B : public A
{
private:
double b1, b2;
};
および汎用コンテナ
template <typename Item>
struct TList
{
typedef std::vector <Item> Type;
};
template <typename Item>
class GList
{
private:
typename TList <Item>::Type items;
};
オブジェクトのコンテナが 4 つあります
GList <A> A1;
GList <B> B1;
GList <A*> A2;
GList <B*> B2;
これらの変換 (アップ/ダウン) は許可されていますか?
1] GList <B> B3 = dynamic_cast <GList <B> &> (A1);
2] GList <A> A3 = static_cast <GList <A> &> (B1);
3] GList <B*> B4 = dynamic_cast <GList <B*> &> (A2);
4] GList <A*> A4 = static_cast <GList <A*> &> (B2);
オブジェクトのリストを親オブジェクトのリストに、またはその逆に変換する方法はありますか?
更新された質問
reinterpret_cast はどうですか?
1] GList <B> B3 = reinterpret_cast <GList <B> &> (A1);
2] GList <A> A3 = reinterpret_cast <GList <A> &> (B1);
3] GList <B*> B4 = reinterpret_cast <GList <B*> &> (A2);
4] GList <A*> A4 = reinterpret_cast <GList <A*> &> (B2);