在C++中使用Typcasting vector <object>?

Jan*_*Jan 1 c++ inheritance casting

我有两个类,障碍和boid,boid继承自障碍.

现在我想编写一些可以处理这两个类的对象的函数,这样传递vector<boid>就可以了vector<obstacle>.

当我像这样进行类型转换并尝试访问向量的大小时,我得到的数字是1840700394而不是60:

vector<boid>* boids; ....
cout << ((vector<obstacle>*)boids)->size() << endl;
Run Code Online (Sandbox Code Playgroud)

我也试过"reinterpret_cast"但同样的问题.

Bil*_*eal 7

C++模板不像C#和Java泛型.模板实例化是一个完整的类,并且不以任何方式与其他模板实例化相关.一个人不能在他们之间施展.

(旁注:如果您使用的static_cast话,它会抓住这个......)

  • +1提及静态演员没有隐藏问题 (2认同)