我一直在做游戏,我有一个名为“人物”的矢量图。一个名为“人物”的班级。 '人物' 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;
}