在 BaseClass 类中,我有一个公共函数:
virtual void Call(){};
在派生类 Archer 内部,我具有以下功能:
void Call(){ cout << "whatever" << endl; };
我还设置了一个向量:
vector<BaseClass> classes;
其中我推送了从 BaseClass 派生的 3 个类。问题似乎(对我来说,我可能错了)是我从对 BaseClass 的引用调用 Call() 即使我通过以下方法将它们推入向量:
BaseClass Player::CharChoice(string character)
{
if(character == "Archer") return *new Archer();
else if(character == "Knight") return *new Knight();
else if(character == "Sorcerer") return *new Sorcerer();
else cerr << "CHARACTER NOT DEFINED" << endl;
};
for(int c = 0; c < chars.size(); c++)
{
classes.push_back(CharChoice(chars[c]));
}
如果我改为设置一个变量,例如:
Archer *archer = new Archer();
并调用 Call(),它按我的意图工作。我对 C++ 还很陌生,无法想出解决方案。