c++default-int中的语法错误



所以我刚开始用c++编程,我计划制作一个小游戏作为我的第一个项目(使用SDL库(。

所以我在一个头文件中有一段非常小的代码,它给了我一个无法解决的错误。

main.h

#include "Screen.h"
#include "MainGame.h"
Screen* screen = nullptr; //main.h line 8

屏幕.h

#pragma once
#include "SDL.h"
#include <string>
#include <stdio.h>
#include <iostream>
#include "GameState.h"
#include "Game.h"
using namespace std;
class Screen
{
public:
Screen(string name, int width, int height, GameState* state);
~Screen();
SDL_Window *window;
SDL_Surface *screen;
SDL_Renderer *renderer;
};

MainGame.h

#pragma once
#include "GameState.h"
#include <stdio.h>
class MainGame :
public GameState
{
public:
MainGame();
~MainGame();
void start();
void update();
void render();
void stop();
};

Game.h

#pragma once
#include "GameState.h"
#include "Screen.h"
#include "SDL.h"
#include "main.h"
class Game
{
public:
GameState* activestate;
Game(GameState state);
~Game();
void changeState(GameState newState);
bool isRunning;
void handleEvents();
void update();
void render();
void stop();
};

GameState.h

#pragma once
class GameState
{ 
public:
GameState();
~GameState();
virtual void start();
virtual void update();
virtual void stop();
virtual void render();
};

它给出了以下错误:

Error   C2143   syntax error: missing ';' before '* main.h  8
Error   C4430   missing type specifier - int assumed. Note: C++ does not support default-int    main.h  8   

这些错误意味着什么?我该如何解决它们?

错误来自循环依赖。有些文件包括Screen。h。Screen。h包括Game。h。Game。h包括main。h。main。h需要Screen。h,但由于pragma的原因,它不能包含它。所以它不知道类Screen。要么删除循环依赖(如果可能的话,更好的解决方案,这里是可能的(:

删除Game.h 中的#include "main.h"

或使用前向声明:

在主目录中写入class Screen;。h:7

最新更新