变量指向矢量

时间:2016-01-15 10:44:45

标签: c++ oop inheritance polymorphism

我试图让命令行侧滚动射击游戏。但是,我正在努力为不同的船型设置继承和类/结构结构。但是,我很可能完全误解了如何解决这个问题。

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}}访问这些。但是,我无法弄清楚如何访问它将从父类继承的所有属性;例如healthcharging

任何帮助都会受到赞赏,我已经搜索过了,但是,大多数答案只是简单地说this->x = x::x或类似的东西,我尝试了newShip->health = 100但这并不起作用。因此,要么更多的细节,要么完全不同的答案。

提前致谢!

1 个答案:

答案 0 :(得分:2)

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

struct enemyShip : Ship
{
    int speed;
    shipType type;
};

: Ship表示enemyShip来自Ship

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