所以我刚开始用c ++编程,我打算做一个小游戏作为我的第一个项目(使用fout.writeframes(frames)
库)。
所以我的头文件中只有一小段代码,给我一个我无法解决的错误。
main.h
SDL
Screen.h
#include "Screen.h"
#include "MainGame.h"
Screen* screen = nullptr; //main.h line 8
MainGame.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;
};
Game.h
#pragma once
#include "GameState.h"
#include <stdio.h>
class MainGame :
public GameState
{
public:
MainGame();
~MainGame();
void start();
void update();
void render();
void stop();
};
GameState.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();
};
它给出了这个错误:
#pragma once
class GameState
{
public:
GameState();
~GameState();
virtual void start();
virtual void update();
virtual void stop();
virtual void render();
};
这些错误是什么意思,我该如何解决?
答案 0 :(得分:1)
该错误来自循环依赖。某些文件包括Screen.h。 Screen.h包括Game.h。 Game.h包括main.h。 main.h需要Screen.h,但是由于杂乱,它无法包含它。因此,它不知道类Screen。要么删除循环依赖项(如果可能的话,可以使用更好的解决方案):
在Game.h中删除#include "main.h"
或使用前向声明:
在main.h:7中写入class Screen;