Sto facendo un semplice gioco per console in C++i membri della classe Accesso ai derivati con un puntatore alla classe base
Vorrei sapere se posso accedere ai membri della classe 'entPlayer' mentre si utilizza un puntatore che punta al classe base ("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;
}
Come potrei chiamare ply-> setName ecc?
O
Se non è possibile in questo modo, che cosa sarebbe un modo migliore?
Siamo spiacenti, ho dovuto modificare la formattazione del codice. Le righe vuote hanno reso il tuo codice davvero alto! Un altro piccolo commento sul tuo codice: segui una convenzione di denominazione coerente, ad es. AllClassNamesLikeThis e parameter_names_like_this. Un altro pidocchio: ti prenderai a calci nel sedere più tardi con abbreviazioni come "ent". Onestamente non posso dire cosa dovrebbe essere un entPlayer. Penso che quello che intendi sia solo "Giocatore", o se ti senti verboso "PlayerEntity". – allyourcode