假设我有一个带有虚函数的空类:
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
.
那么如何从其基类列表中调用被覆盖的函数呢?