"'SpaceShip' does not name a type"即使宇宙飞船肯定是一种类型
"'SpaceShip' does not name a type" even though SpaceShip certainly is a type
我正在开发一款小行星游戏,以此自学一些编程知识,但我收到此错误,我的一个类没有命名类型。
我有一个继承自实体类的 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(包括接口,回调或更好的事件(信号(
相关文章:
- 有没有一种方法可以通过"typedef"为重新定义的基本类型定义特征和强制转换运算符
- 在运行时检查继承是否只有一种类型和 void*
- 文本冒险游戏 - 如何区分一种项目类型与另一种项目类型以及如何构建项目类/子类
- 当 c++ 需要一种数据类型并获取另一种数据类型时会发生什么?
- 在硬件SIMD矢量指针和相应类型之间进行"interpret_cast"是一种未定义的行为吗
- 另一种类型的智能ptr,比如具有弱refs的unique_ptr
- void* 数组将元素转换为另一种类型
- 使用字节向量作为其他类型的原始存储是一种好的做法吗
- 将一种数据类型的向量复制到同一数据类型的结构向量中的有效方法是什么
- 将一种类型的比特重新解释为不同类型的比特的技术
- 有没有一种方法可以使用SFINAE来检测一个类型是否实现了给定的抽象基类
- 在枚举类型上使用std::max是不是一种糟糕的做法
- 为什么需要类型名称,即使似乎足以推断名称应该是一种类型?
- 在 c++ 中将一种结构类型分配给另一种类型
- 将空基类优化对象强制转换为另一种类型是否会破坏严格的别名?
- 我怎样才能让编译器推导出一种类型的 nullptr
- 如何测试指针类型是否可以安全地转换为另一种指针类型?
- 有没有一种很好的方法来实现具有默认失败情况的条件类型?
- 一种类型的多个 cv 分解
- 如何将对象定义为一种类型,然后再将其声明为子类型