我有一个类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
)。
有什么办法可以改变吗?