使用抽象基类指针创建派生类的动态数组

时间:2018-04-09 20:24:30

标签: c++

如果基类是抽象类,是否允许创建基本指针的动态数组?我认为答案肯定是肯定的,但是当我将基类函数(对于派生类而言)声明为纯虚拟时,它告诉我无法创建派生对象,因为它们是抽象的。根据我的理解,这不应该是因为基类可以是抽象的,而派生类不是抽象的。为了解决这个问题,我尝试从这些基类函数的末尾删除'= 0',并为它们提供了空的定义。这允许我编译,但我的函数正在实现基类定义。我怎么能解决这个问题?

1 个答案:

答案 0 :(得分:1)

确保维护一个指向对象指针的容器,而不是对象本身。如果您尝试将派生类对象存储在基类对象的容器中而不是指针中,它将创建一个副本并为您提供编译错误。确保它看起来像这样:

std::vector<Base *> container;
container.push_back(new Derived); // Will make a pointer to the derived object
container[0]->Foo; // Will call derived method