Я делаю простую консольную игру в C++Доступ к производным членов класса с базового класса указателю
Я хотел бы знать, если я могу получить доступ пользователей из класса «entPlayer», используя указатель, который указывает на базовый класс ('Entity'):
class Entity {
public:
void setId(int id) { Id = id; }
int getId() { return Id; }
protected:
int Id;
};
class entPlayer : public Entity {
string Name;
public:
void setName(string name) { Name = name; }
string getName() { return Name; }
};
Entity *createEntity(string Type) {
Entity *Ent = NULL;
if (Type == "player") {
Ent = new entPlayer;
}
return Ent;
}
void main() {
Entity *ply = createEntity("player");
ply->setName("Test");
ply->setId(1);
cout << ply->getName() << endl;
cout << ply->getId() << endl;
delete ply;
}
Как я могу назвать ply-> setName и т. д.?
ИЛИ
Если это не возможно, таким образом, что было бы лучше?
Извините, мне пришлось изменить форматирование кода. Пустые строки сделали ваш код очень высоким! Еще один небольшой комментарий о вашем коде: придерживайтесь последовательного соглашения об именах, например. AllClassNamesLikeThis и parameter_names_like_this. Еще один нит: вы будете пинать себя в заднице позже с аббревиатурами, такими как «ent». Я, честно говоря, не могу сказать, какой должен быть entPlayer. Я думаю, что вы имеете в виду только «Player», или если вы чувствуете многословность «PlayerEntity». – allyourcode