Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++中的语法错误包括文件 我在微软Visual Studio 2010中用C++编写游戏,昨天我写了一个乒乓游戏,一切都很好,但是现在编译器告诉我有很多错误,例如: 1>w:\c++\planet escape\planet escape\room.h(25): error C2061: syntax error : identifier 'WorldMap'_C++_Visual Studio 2010_Visual C++ - Fatal编程技术网

C++中的语法错误包括文件 我在微软Visual Studio 2010中用C++编写游戏,昨天我写了一个乒乓游戏,一切都很好,但是现在编译器告诉我有很多错误,例如: 1>w:\c++\planet escape\planet escape\room.h(25): error C2061: syntax error : identifier 'WorldMap'

C++中的语法错误包括文件 我在微软Visual Studio 2010中用C++编写游戏,昨天我写了一个乒乓游戏,一切都很好,但是现在编译器告诉我有很多错误,例如: 1>w:\c++\planet escape\planet escape\room.h(25): error C2061: syntax error : identifier 'WorldMap',c++,visual-studio-2010,visual-c++,C++,Visual Studio 2010,Visual C++,这是Room.h文件: #pragma once #include <allegro5/allegro.h> #include <vector> #include "Entity.h" #include "WorldMap.h" #include "Link.h" #define ROOM_W 20 #define ROOM_H 20 class Room{ private:... public:... }; 当在代码中没有错误时,它会看到所有的类都很好。 那么,

这是Room.h文件:

#pragma once

#include <allegro5/allegro.h>
#include <vector>
#include "Entity.h"
#include "WorldMap.h"
#include "Link.h"

#define ROOM_W 20
#define ROOM_H 20

class Room{
private:...
public:...
};
当在代码中没有错误时,它会看到所有的类都很好。 那么,是什么导致了这样的错误呢

编辑: 这是世界地图

#pragma once

#include <allegro5/allegro.h>
#include "Room.h"
#include "Player.h"

#define WORLD_W 10
#define WORLD_H 10

class WorldMap{
private:...
public:...
};

如果我在运行它时,他看不到它,那么为什么他在编码时会看到它?

您有循环包含。假设您正在编译一个包含include WorldMap.h作为第一个适用include语句的文件。文件WorldMap.h包含了Room.h,这将导致很多麻烦。在include WorldMap.h声明中,问题在Room.h中认真地开始了。由于WorldMap.h中的pragma once,这一包含没有任何效果。当编译器处理Room.h的主体时,类WorldMap既没有定义也没有声明

附录 解决方案是去掉那些无关的include语句。文件WorldMap.h不需要包含Room.h或Player.h。相反,它需要向前声明教室和玩家。类似地,在Room.h中也不需要所有这些include语句


通常,最好在头文件中使用类型的前向声明,而不是包含定义类型的文件。如果标头中的代码不需要知道相关类型的详细信息,只需使用转发声明即可。不要包含定义类型的标题。

您有循环包含。假设您正在编译一个包含include WorldMap.h作为第一个适用include语句的文件。文件WorldMap.h包含了Room.h,这将导致很多麻烦。在include WorldMap.h声明中,问题在Room.h中认真地开始了。由于WorldMap.h中的pragma once,这一包含没有任何效果。当编译器处理Room.h的主体时,类WorldMap既没有定义也没有声明

附录 解决方案是去掉那些无关的include语句。文件WorldMap.h不需要包含Room.h或Player.h。相反,它需要向前声明教室和玩家。类似地,在Room.h中也不需要所有这些include语句


通常,最好在头文件中使用类型的前向声明,而不是包含定义类型的文件。如果标头中的代码不需要知道相关类型的详细信息,只需使用转发声明即可。不要包含定义类型的标题。

是否确定WorldMap.h定义了WorldMap类型?编译器告诉您它无法识别WorldMap类型。我想我们需要查看WorldMap.h文件来回答这个问题。因为您只使用WorldMap*所以实际上不需要拉入整个定义-您只需添加一个类WorldMap;在你的教室前{..};公告但是,在实际使用之前,您需要完整的类。@Rup:错误的建议,在这种情况下,这只会隐藏问题。如果WorldMap.h没有定义WorldMap,那么OP可能会消除这个错误,但最终会被卡在一个点上,向前声明将不起作用。您有循环包含。不要这样做。你确定WorldMap.h定义了WorldMap类型吗?编译器告诉您它无法识别WorldMap类型。我想我们需要查看WorldMap.h文件来回答这个问题。因为您只使用WorldMap*所以实际上不需要拉入整个定义-您只需添加一个类WorldMap;在你的教室前{..};公告但是,在实际使用之前,您需要完整的类。@Rup:错误的建议,在这种情况下,这只会隐藏问题。如果WorldMap.h没有定义WorldMap,那么OP可能会消除这个错误,但最终会被卡在一个点上,向前声明将不起作用。您有循环包含。不要那样做。