【发布时间】:2015-09-04 18:05:51
【问题描述】:
假设你有以下类:
class Parent
{
// methods and members go here
};
然后你根据父级创建一个子级:
class Child : public Parent
{
public:
someFunction();
};
现在 Parent 类没有 someFunction() 但 Child 类有。假设您有一个父类的向量,并且您想调用子类的方法,假设向量包含父类和子类的实例,假设它们都是相同的基本类型。
std::vector<Parent> myContainer;
myContainer.push_back(a parent);
myContainer.push_back(a child);
myContainer[1].someFunction();
我怎样才能做到这一点?我基本上是在尝试创建父母的向量,但孩子也进入该向量。我想调用一种儿童专用的方法。这可能吗?
【问题讨论】:
-
您的向量包含
Parent对象。它对Children一无所知。 -
@Bugster 我会附加您的向量仅包含父对象。:) 它不能容纳子对象。您至少应该定义一个指向多态基类的指针向量。
-
难道不能创建一个同时容纳两者的容器吗?这不是多态性的好处之一吗?
-
多态性只适用于指针和引用,所以如果你创建一个指针向量,那么它是可能的。
-
@ivanw 这听起来确实是个好主意,谢谢
标签: c++ class inheritance polymorphism