我正在尝试制作命令行侧滚动射击游戏。但是,我正在努力为不同的船型设置继承和类/结构结构。但是,我完全有可能完全误解该如何做。

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;来访问它们。但是,我不知道如何访问它将从父类继承的所有属性。例如healthcharging等。

任何帮助将不胜感激,我已经搜索过,但是,大多数答案只是说this->x = x::x或类似的东西,而我尝试过newShip->health = 100,这是行不通的。因此,将不胜感激,或者提供了完全不同的答案。

提前致谢!

最佳答案

您需要从enemyShip中提升(例如)Ship并将其声明为:

struct enemyShip : Ship
{
    int speed;
    shipType type;
};
: Ship表示enemyShip源自Ship

然后,您将需要在struct createShip外部定义Ship(因为Ship内部的enemyShip无法正确定义)。

07-24 18:13