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ですか (ここでは完全に推測しています)。この場合、どうすればよいですか?