我有一个类Object和一些派生类,例如class Bird : public Object. 功能Object::Render和Bird::Render被定义和实现。(事实上,Bird::Render调用Object::Render)
我也有一个vector<Object*>里面拿着一堆Bird*s。现在,在未来,这个向量还将包含其他类型的对象。
我的问题是:在不知道该向量元素的类型的情况下,是否可以执行其特定Render功能,即可以
vector<Object*> objects;
object.push_back(new Bird());
// ...
objects[i]->Render(); // This should execute Bird::Render
据我所知,最后一行只执行Object::Render(这是有道理的,对于调用函数,这是一个 vanilla Object)。
有什么办法可以改变吗?