C++ C++;标头错误C2238意外标记'';
PAUSEMEU头文件中的以下行有C2238错误:Game*Game; 上面写着“;”是意外标记,以及:C2143语法错误:缺少“;”在同一行的“*”之前;我不知道这些文件有什么问题,我认为这两个文件都是正确的 PauseMenu.h头文件:C++ C++;标头错误C2238意外标记'';,c++,C++,PAUSEMEU头文件中的以下行有C2238错误:Game*Game; 上面写着“;”是意外标记,以及:C2143语法错误:缺少“;”在同一行的“*”之前;我不知道这些文件有什么问题,我认为这两个文件都是正确的 PauseMenu.h头文件: #pragma once #include "EventHandler.h"; #include "MousePressEvent.h"; #include "RectElement.h"; #include "Engine.h"; class Paus
#pragma once
#include "EventHandler.h";
#include "MousePressEvent.h";
#include "RectElement.h";
#include "Engine.h";
class PauseMenu :
public EventHandler
{
public:
PauseMenu();
void Show();
void Hide();
void onEvent(Event* event);
void onEvent(MousePressEvent* event);
Game* game;
private:
RectElement* background;
RectElement* resume;
RectElement* options;
RectElement* quit;
bool visible = false;
};
Game.h头文件
#pragma once;
#include "Engine.h";
#include <ctime>;
#include "GameLayer.h";
#include "TextElement.h";
#include "HUDManager.h";
#include <windows.h>;
#include "Collider.h";
#include "CircleCollider.h";
#include "BoxCollider.h";
#include "MouseMoveEvent.h";
#include "CollisionShapeHitEvent.h";
#include "EventHandler.h";
#include "MainMenu.h";
#include "FpsCounter.h";
#include "PauseMenu.h";
#define PI 3.14159265358979323846264338327950288;
class Game :
public EventHandler
{
public:
Game(bool dev);
~Game();
void onEvent(Event* event);
void onEvent(MouseMoveEvent* event);
void onEvent(KeyPressEvent* event);
void onEvent(KeyReleaseEvent* event);
void onEvent(CollisionShapeHitEvent* event);
MainMenu* mainMenu;
PauseMenu* pauseMenu;
private:
Player* player;
Engine* engine;
};
#pragma一次;
#包括“发动机h”;
#包括,;
#包括“GameLayer.h”;
#包括“TextElement.h”;
#包括“HUDManager.h”;
#包括,;
#包括“Collider.h”;
#包括“CircleCollider.h”;
#包括“BoxCollider.h”;
#包括“MouseMoveEvent.h”;
#包括“CollisionShapeHiteEvent.h”;
#包括“EventHandler.h”;
#包括“MainMenu.h”;
#包括“fpsconter.h”;
#包括“PauseMenu.h”;
#定义PI 3.14159265358979323846264338327950288;
班级游戏:
公共事件处理程序
{
公众:
游戏(bool-dev);
~Game();
void onEvent(事件*事件);
void onEvent(MouseMoveEvent*事件);
void onEvent(按键事件*事件);
void onEvent(KeyReleaseEvent*事件);
void onEvent(CollisionShapeHitEvent*事件);
主菜单*主菜单;
PauseMenu*PauseMenu;
私人:
玩家*玩家;
引擎*引擎;
};
删除#include
s和#define
s后的分号。事实上:如果找不到分号出现的原因,请删除以#
开头的行后的所有分号
我怀疑您是否需要game.h
中包含的所有这些文件。但是您在pausemenu.h
中缺少game.h
,或者game
的前向声明:
class Game;
删除
#include
s和#define
s后的分号。事实上:如果找不到分号出现的原因,请删除以#
开头的行后的所有分号
我怀疑您是否需要game.h
中包含的所有这些文件。但是您在pausemenu.h
中缺少game.h
,或者game
的前向声明:
class Game;
我猜标题之间有一些循环依赖关系 要解决这个问题,您可以使用
类游戏的正向声明在类PauseMenu
之前的PauseMenu.h头文件中的code>
我想这样你仍然会有其他错误,但是你会跳过前面提到的一个,我想你在标题之间有一些循环依赖性
要解决这个问题,您可以使用类游戏的正向声明在类PauseMenu
之前的PauseMenu.h头文件中的code>
我想这样你仍然会遇到其他错误,但是你会跳过前面提到的一个尝试放置析构函数~PauseMenu(){}
在类的末尾。尝试放置析构函数~PauseMenu(){}
在课程结束时。你是否忘记在你的PauseMenu.h
中包含“Game.h”
?我忘记了,但是@yksisarvine之后仍然存在相同的错误你在Game
和PauseMenu
之间存在循环依赖关系,你需要两者都包含指向对方的指针吗?您需要向前声明这些类中的一个,或者更好地解决循环依赖关系,这样这两个类就不需要另一个了。我之前的评论无效,您不能执行循环包含可能重复的您是否忘记在您的PauseMenu.h
中包含“Game.h”
?我执行了,但@yksisarvine之后仍然存在相同的错误您在Game
和PauseMenu
之间存在循环依赖关系,是否需要两者都包含指向彼此的指针?您需要向前声明这些类中的一个,或者更好地解决循环依赖关系,这样这两个类就不需要另一个了。我之前的评论无效,您也不能在pragma后面重复使用分号。您需要仔细阅读c预处理器的功能。它解释了以#开头的每一行。编译器永远看不到这些行。Cpp不使用分号。请删除每行末尾以#开头的分号(这意味着以#pragma、#define、#include开头的行)。宏有时包括“;”但您必须知道宏的预期用途。如果您想试验宏,请使用“cpp”(c预处理器)命令查看代码最终是如何展开的。顺便说一句,通常头文件使用模式“#ifndef SYMBOL_H#define SYMBOL_H…..#endif”,不确定#pragma的可移植性。AFAIK#pragma once不是标准的一部分,但它在编译器中得到了很好的支持。pragma后面也没有分号。您需要仔细阅读c预处理器的功能。它解释了以#开头的每一行。编译器永远看不到这些行。Cpp不使用分号。请删除每行末尾以#开头的分号(这意味着以#pragma、#define、#include开头的行)。宏有时包括“;”但您必须知道宏的预期用途。如果您想试验宏,请使用“cpp”(c预处理器)命令查看代码最终是如何展开的。顺便说一句,通常头文件使用模式“#ifndef SYMBOL_H#define SYMBOL_H…..#endif”,不确定#pragma的可移植性。AFAIK#pragma once不是标准的一部分,但它在编译器中得到了很好的支持。