gpt4 book ai didi

c++ - 在此范围内未声明“敌人”?

转载 作者:太空狗 更新时间:2023-10-29 23:42:10 27 4
gpt4 key购买 nike

好的,这就是我的错误:'Enemy' 未在此范围内声明。错误在 map.h 文件中,即使 map.h 包含 enemy.h,如图所示

#ifndef MAP_H_INCLUDED
#define MAP_H_INCLUDED

#include <iostream>
#include <fstream>
#include <string>
#include <vector>

#include "enemy.h"

#define MAX_TILE_TYPES 20

using namespace std;

class Map{
public:
Map();
void loadFile(string filename);
int** tile;
int** ftile;
bool solid[MAX_TILE_TYPES];
int width;
int height;
int tileSize;

vector<Enemy> enemies;

};

#endif // MAP_H_INCLUDED

这是 enemy.h

#ifndef ENEMY_H_INCLUDED
#define ENEMY_H_INCLUDED

#include "global.h"
#include "map.h"

class Enemy{
public:
Enemy();
Enemy(float nx, float ny, float nstate);
void update(Map lv);
bool rectangleIntersects(float rect1x, float rect1y, float rect1w, float rect1h, float rect2x, float rect2y, float rect2w, float rect2h);
void update();
float x;
float y;
Vector2f velo;
float speed;
float maxFallSpeed;
int state;
int frame;
int width;
int height;

int maxStates;
int *maxFrames;

int frameDelay;

bool facingLeft;
bool onGround;

bool dead;
int drawType;
};

#endif // ENEMY_H_INCLUDED

有人知道这是怎么回事以及如何解决吗?

最佳答案

enemy.h 包括 map.h

但是,map.h 包括 enemy.h

因此,如果您包含 enemy.h,处理过程将如下所示:

  • ENEMY_H_INCLUDED 得到定义
  • 包含 global.h
  • 包含 map.h
    • MAP_H_INCLUDED 得到定义
    • enemy.h 包含在内
      • ENEMY_H_INCLUDED 已经定义,所以我们跳到文件末尾
    • 类映射被定义
      • 错误,敌人尚未定义

要解决此问题,请从 enemy.h 中删除 #include "map.h",并将其替换为前向声明 class Map;

您还需要修改 void update(const Map& lv); -- 使用 const&

并在 enemy.cpp 中包含“map.h”

关于c++ - 在此范围内未声明“敌人”?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5642237/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com