C++ 从父向量中调用子方法?

Bug*_*ter 3 c++ polymorphism inheritance class

假设您有以下课程:

class Parent
{
   // methods and members go here
};
Run Code Online (Sandbox Code Playgroud)

然后根据父级创建一个子级:

class Child : public Parent
{
   public:
      someFunction();
};
Run Code Online (Sandbox Code Playgroud)

现在 Parent 类没有 someFunction() 但 Child 类有。假设您有一个父类向量,并且您想调用子类的方法,假设向量包含父类和子类的实例,因为它们都是相同的基类型。

std::vector<Parent> myContainer;
myContainer.push_back(a parent);
myContainer.push_back(a child);

myContainer[1].someFunction();
Run Code Online (Sandbox Code Playgroud)

我怎样才能使这项工作?我基本上是在尝试创建一个父母的向量,但孩子们也会进入这个向量。我想调用一个儿童专用的方法。那可能吗?

小智 5

多态只适用于指针和引用,所以如果你创建一个指针向量,那么它是可能的。


Dav*_*rtz 1

您创建一个对象向量Parent。这里不存在多态性。向量包含值。如果你想要一个多态容器,你必须使用其他东西。

就像你所做的那样

Parent myObject;
Run Code Online (Sandbox Code Playgroud)

不管你myObject以后做什么,它仍然是一个Parent。即使你这样做了myObject = Child()