Tôi đang tạo một trò chơi giao diện điều khiển đơn giản trong C++Truy cập các thành viên lớp dẫn xuất bằng một con trỏ lớp cơ sở
Tôi muốn biết liệu mình có thể truy cập các thành viên từ lớp 'entPlayer' hay không lớp cơ sở ('Thực thể'):
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;
}
Làm cách nào để có thể gọi ply-> setName etc?
HOẶC
Nếu không thể như vậy, cách nào tốt hơn?
Rất tiếc, tôi phải chỉnh sửa định dạng mã của bạn. Các dòng trống làm cho mã của bạn thực sự cao! Một nhận xét nhỏ khác về mã của bạn: gắn với quy ước đặt tên nhất quán, ví dụ: AllClassNamesLikeThis và parameter_names_like_this. Một nit khác: bạn sẽ đá vào mông sau với chữ viết tắt như "ent". Tôi thành thật không thể nói những gì một entPlayer được cho là. Tôi nghĩ những gì bạn có nghĩa là chỉ là "Player", hoặc nếu bạn đang cảm thấy tiết "PlayerEntity". – allyourcode