我试图让命令行侧滚动射击游戏。但是,我正在努力为不同的船型设置继承和类/结构结构。但是,我很可能完全误解了如何解决这个问题。
class Ship
{
int health;
float charging;
bool charged;
coords location;
bool shielded;
int chargeSpeed;
int cannons;
int shieldHealth;
struct enemyShip
{
int speed;
shipType type;
};
struct bossShip
{
int Bonuspoints;
};
struct myShip
{
int lives;
int points;
int isDead;
};
void createShip(shipType type, int speed, int health, bool shields, int cannons, int chargeSpeed, int bonusPoints)
{
switch (type)
{
speeder:
Ship::enemyShip newShip;
newShip.speed = 0;
ships.push_back(newShip);
bruiser:
sprayer:
boss:
}
}
};
这是目前的Ship
课程。我的想法是,我将能够将参数传递给createShip方法(来自我的游戏循环),这将创建一个正确类型的新Ship
,然后将其转储到船舶列表中(这是全局的)
但是,虽然我可以轻松访问属于newShip
所属的struct
对象的属性,但在显示的情况下,我可以在newShip.speed
之后使用newShip = Ship::enemyShip newShip;
{1}}访问这些。但是,我无法弄清楚如何访问它将从父类继承的所有属性;例如health
,charging
等
任何帮助都会受到赞赏,我已经搜索过了,但是,大多数答案只是简单地说this->x = x::x
或类似的东西,我尝试了newShip->health = 100
但这并不起作用。因此,要么更多的细节,要么完全不同的答案。
提前致谢!
答案 0 :(得分:2)
您需要从enemyShip
中提升(例如)Ship
并将其声明为:
struct enemyShip : Ship
{
int speed;
shipType type;
};
: Ship
表示enemyShip
来自Ship
。
然后,您需要在结构createShip
之外定义Ship
(因为内部Ship
enemyShip
将无法正确定义。)