【发布时间】:2012-12-17 00:43:54
【问题描述】:
假设我有一个带有虚函数的空类:
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 并为 Derived 类而不是 Base 类调用 Foo()?现在,如果我说listOfBases[i].Foo();,那么这是基类会打印出来,但我想打印Derived类中被覆盖的类。
我可以将其设为Derived 的列表而不是Base,这样就可以解决问题,但我将用各种不同的方式调用这些继承的类,所以我需要一个Base 的列表.
那么如何从基类列表中调用被覆盖的函数呢?
【问题讨论】:
-
继承不是这样工作的。也许一本关于 C++ 的基本教科书会花时间花时间?
标签: c++ inheritance virtual overriding