我有一个类型定义,typedef vector<Object*> ObjList;
我也有一个函数vector<BigObject*>* ObjectBox::getBigObjectList();
。BigObject
继承自Object
我想要做的是获取一个vector<BigObject*>*
fromgetBigObjectList()
并将其转换为vector<Object*>*
,这是一个向上转换,并且这种类型被定义为ObjList
所以我基本上想将它转换为一个ObjList
类型
我尝试了两种方法,第一种是
ObjList *normalObjectList = (ObjList*) box->getBigObjectList();
这个编译,我从这篇文章中读到(When should static_cast, dynamic_cast, const_cast and reinterpret_cast be used?),它说 C 风格的转换很少需要,因为它可以被开发成reinterpret-cast
然后我尝试使用static_cast
,但我得到一个错误说无效类型转换
ObjList *normalObjectList = static_cast<ObjList*> (box->ClipObjectInRect());
这也行不通
ObjList *normalObjectList = static_cast<vector<Object*>*> (box->ClipObjectInRect());
为什么这不起作用?这是因为static_cast
只能用于转换直接类(如其Object
自身)而不是嵌套类(我只是在这里完全猜测)?在这种情况下我该怎么办?