我正在尝试制作命令行侧滚动射击游戏。但是,我正在努力为不同的船型设置继承和类/结构结构。但是,我完全有可能完全误解该如何做。
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;
来访问它们。但是,我不知道如何访问它将从父类继承的所有属性。例如health
,charging
等。任何帮助将不胜感激,我已经搜索过,但是,大多数答案只是说
this->x = x::x
或类似的东西,而我尝试过newShip->health = 100
,这是行不通的。因此,将不胜感激,或者提供了完全不同的答案。提前致谢!
最佳答案
您需要从enemyShip
中提升(例如)Ship
并将其声明为:
struct enemyShip : Ship
{
int speed;
shipType type;
};
: Ship
表示enemyShip
源自Ship
。然后,您将需要在struct
createShip
外部定义Ship
(因为Ship
内部的enemyShip
无法正确定义)。