Ale*_*TPF 7 c++ stl casting vector
我有一个现有的类和函数,如下所示:
Class base_class{
...
}
void Func(...,vector<base_class> &vec_b,...){
// inside the function, the vector vec_b is being re-organized and re-sized
}
Run Code Online (Sandbox Code Playgroud)
我定义了一个派生类,看起来像:
Class derived_class: public base_class{
...
}
Run Code Online (Sandbox Code Playgroud)
现在,在不改变功能Func,可我通过vector<derived_class>到Func,例如:
void main(){
vector <derived_class> d;
Func(...,d,...);
}
Run Code Online (Sandbox Code Playgroud)
派生类d经历相同的重新组织和重新调整大小?我知道我可以在一个函数调用中将派生类转换为基类而没有问题,但是一旦用一个向量进入游戏,似乎有困难吗?我无法在线找到答案,因此非常感谢任何建议或帮助.谢谢.
如果两个类的大小不同,则用派生类的向量替换基类的向量将不起作用。这是因为向量在内部存储类型的连续实例,因此基向量会认为第二个元素位于与实际位置不同的位置。但是,您可以使用指针向量。