假设我有一个带有虚函数的空类:
class Base
{
public:
virtual void Foo(){std::cout << "this is the base class";}
}
然后我有一个继承Base并覆盖的类Foo():
class Derived : public Base
{
public:
void Foo(){std::cout << "this is the derived class";}
}
然后还有其他一些包含以下列表的类Base:
class OtherClass
{
public:
std::vector<Base> listOfBases; //note it's not std::list<Derived>
}
我如何循环listOfBases并调用Foo()类Derived而不是Base类?现在,如果我说listOfBases[i].Foo();这是要打印的基类,但我希望类中被覆盖的基Derived类能够打印。
我可以把它变成一个列表Derived而不是,Base这样就可以解决它,但是我将把这些继承的类称为各种不同的东西,所以我需要一个Base.
那么如何从其基类列表中调用被覆盖的函数呢?