"'SpaceShip' does not name a type"即使宇宙飞船肯定是一种类型

"'SpaceShip' does not name a type" even though SpaceShip certainly is a type

本文关键字:类型 一种 not does SpaceShip name type 宇宙飞船      更新时间:2023-10-16

我正在开发一款小行星游戏,以此自学一些编程知识,但我收到此错误,我的一个类没有命名类型。

我有一个继承自实体类的 SpaceShip 类(两者都已定义(,我有一个从实体继承的 Bullet 类。我试图将SpaceShip成员放入子弹类,以告知谁射了子弹,但它一直告诉我"'SpaceShip'没有命名类型"。

下面是一些代码:

宇宙飞船.h

class SpaceShip : public Entity
{
private:
    int lives;
    int score;
    int animationRow;
    int shotsFired;
public:
SpaceShip();
void Init(SDL_Surface *image = NULL);
void Destroy();
void Update();
void Render( SDL_Surface *screen );
...
};

子弹

#ifndef BULLET_H
#define BULLET_H

#include <SDL/SDL_gfxPrimitives.h>
#include "entity.h"
#include "spaceship.h"
#include "Globals.h"

class Bullet : public Entity
{
private:
    SpaceShip* owner;
public:
    Bullet( SpaceShip* ship );
    void Update();
    void Render( SDL_Surface *screen );
    void Destroy();
    void Collided(int objectID);
};
#endif // BULLET_H

为什么它没有找到太空船类型?

似乎(基于注释中的澄清(您的代码具有循环依赖项。 SpaceShip取决于Bullet,而又取决于SpaceShip。您需要重构代码以删除循环依赖项。

通常这可以通过前向减速轻松实现,但更高级的方法(更正确的OOP(包括接口,回调或更好的事件(信号(

相关文章: