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

时间:2018-07-22 20:45:01

标签: c++ oop sdl

所以我刚开始用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();
};

这些错误是什么意思,我该如何解决?

1 个答案:

答案 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;