私は今、愚かだと感じています.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
メソッドが完全に機能しており、問題はそれらの中にありません。