【发布时间】:2012-11-07 18:05:09
【问题描述】:
我现在觉得自己很蠢,好久没学C++了,不明白怎么回事……但是我得到了以下课程:
#include <string>
class NamedObject
{
public:
NamedObject();
virtual ~NamedObject();
virtual std::string getName() const { return m_name };
virtual void setName(const std::string name) { m_name = name };
private:
std::string m_name;
};
现在我继承了一个简单的类:
#include "NamedObject.h"
enum eTeam { eAttacker, eDefender, eSpectator, eNone };
class Player : public NamedObject
{
public:
Player();
virtual ~Player();
virtual void printName();
virtual eTeam getTeam() const { return m_team };
virtual void setTeam(const eTeam team) { m_team = team };
private:
std::string m_name;
eTeam m_team;
};
但是,我无法在 main.cpp 中使用 player->setName("blabla")?这是主文件:
#include "Player.h"
int main()
{
Player* p1 = new Player();
p1->setName("Name Changed!")
p1->printName(); // prints "Unnamed" since I declared that in default ctor
return 0;
}
我没有收到任何错误,一切运行良好,只是名称没有简单地改变。此外,我的所有构造函数和析构函数,以及我的printName-方法都运行良好,问题不在它们之内。
【问题讨论】:
-
这不是缺少的';'在
setName()之后? -
不,不是,我显然重写了整个代码。
标签: c++ inheritance methods superclass