当通过向量访问元素时,如何避免调用父类的函数? (遗产)

时间:2017-03-26 00:04:23

标签: c++ class inheritance vector polymorphism

我一直在做游戏,我有一个名为“人物”的矢量图。一个名为“人物”的班级。 '人物' class具有虚方法talk,所有它的派生类都继承。但是当我这样调用函数时:

people.front().talk();

它称之为父母类的功能,而不是派生类的功能。这对我来说非常有意义,因为毕竟它是“人物”的载体。而不是鲍勃'的矢量。但是,我无法弄清楚如何避免这个问题。这里有一些简化的代码来说明我的意思。

#include <iostream>
#include <vector>

using namespace std;

class Base {
    public:
        Base() {}
        virtual void coutLine() {cout << "base\n";}
};

class Derived : public Base {
    public:
        using Base::Base;
        void coutLine() {cout << "derived\n";}
};

class Owner {
    public:
        Base *baseItem;
        Dude() {}
};

int main() {
    vector<Base> stuffs;
    Derived d;
    stuffs.push_back(d);

    Owner chris;
    chris.baseItem = &stuffs.front();
    chris.baseItem->coutLine();
    return 0;
}

0 个答案:

没有答案