I have a type definition のtypedef vector<Object*> ObjList;
I also have a function vector<BigObject*>* ObjectBox::getBigObjectList();
. BigObject
から継承されますObject
私がやりたかったのは、vector<BigObject*>*
fromを取得しgetBigObjectList()
て に変換することvector<Object*>*
です。これは上向きのキャストであり、この型は として定義されているObjList
ので、基本的にそれを型に変換したかったのObjList
です。
私は2つの方法を試しました.1つ目は
ObjList *normalObjectList = (ObjList*) box->getBigObjectList();
これはコンパイルされ、この記事 ( When should static_cast, dynamic_cast, const_cast and reinterpret_cast be used? ) から読みました。reinterpret-cast
次にstatic_cast
、を使用しようとしましたが、無効な型変換というエラーが表示されました
ObjList *normalObjectList = static_cast<ObjList*> (box->ClipObjectInRect());
これもうまくいきません
ObjList *normalObjectList = static_cast<vector<Object*>*> (box->ClipObjectInRect());
なぜこれが機能しないのですか?これは、ネストされたクラスではなくstatic_cast
直接クラス (それ自体など) をキャストするためにのみ使用できるためObject
ですか (ここでは完全に推測しています)。この場合、どうすればよいですか?