类类型作为参数,并且类向前

时间:2018-12-30 15:03:25

标签: c++ oop

我创建了一个简单的游戏引擎,切换场景几乎没有问题。

我有2个班级:游戏和场景

在Game类中,我有2个指向场景的指针,还有switchScene()方法,我想将其共享给Scene对象。

在Scene类中,我想要一个指向游戏对象的指针,但这不起作用。

Game.hpp

#pragma once
#include "Scene.cpp"

class Game{
    public:
        Game();
        ~Game();
        void init(const char* title, int width, int height, bool fullscreen, int fps);
        void switchScene(Scene* scene);
    private:
        Scene* stage = nullptr;
        Scene* tmpStage = nullptr;
};

Scene.hpp

#pragma once
#include <vector>
#include <string>
#include "Game.hpp"
class Game;

class Scene{
    public:
        Scene(std::string sceneName);
        ~Scene();
        void setGame(Game* g);
    protected:
        Game* game;
};

这样,当尝试切换场景时,我丢失了游戏类定义,并得到此错误:

error: invalid use of incomplete type ‘class Game’
 game->switchScene(new Scene("A"));

我该怎么办?如何在场景中引用游戏对象?

1 个答案:

答案 0 :(得分:0)

如果您在Scene头文件中向前声明Game.hpp,则可以同时删除#include "Scene.hpp"(实际上应该是)和另一个头中的#include "Game.hpp"文件

剩下的可能的问题是两个源文件都需要包括两个头文件。