“ [ClassName]不会命名类型”,即使包含它的头文件也是如此

时间:2019-04-07 11:35:10

标签: c++ include

标题。 (显示的文件)

我有两个头文件Game.h(声明Game类)和GameMap.h(声明GameMap类)。我正在尝试使GameMap类具有指向实例化它的Game对象的指针,并且Game类存储GameMap对象。

因此,这两个文件相互包含,不会导致任何错误,并且我具有标头保护符。这两个文件都在同一个文件夹中,因此包括它们都没有问题。

问题在于,当我进行编译时,即使它们都被包括在内,两个类都不认为另一个存在。

Game.h

#ifndef GAME_H
#define GAME_H

#include <stdio.h>
#include <SDL2/SDL.h>
#include <vector>
#include "GameMap.h"

class Game
{
public:
    Game();
    ~Game();

    int WHEIGHT;
    int WWIDTH;
    bool game_running;
    SDL_Window *gWindow = NULL;
    SDL_Renderer *gRenderer = NULL;
    SDL_Surface *gSurface = NULL;
    GameMap theMap;

    int initialise(int HEIGHT, int WIDTH);
    void onEvent(SDL_Event event, Uint32 timeElapsed);
    //int setupObjects();
    int playGame();
    void updateDisplay();
};

#endif

GameMap.h

#ifndef MAPCLASS_H
#define MAPCLASS_H

#include "MapTile.h"
#include "GameEntity.h"
#include "Game.h"
#include <vector>

/* map creation
*/

class GameMap
{
public:
    GameMap();
    GameMap(Game* GAME);
    ~GameMap();

    void updateEntities();
    void generateMapRandom(int width, int height);
    int setupObjects();
    void draw(SDL_Renderer* renderer);

    std::vector<std::vector<MapTile*>> levelFloor;
    std::vector<GameEntity> entities;
    Game* game;
};

#endif

如果您到此为止,则感谢您抽出宝贵的时间阅读我的问题,并感谢您的任何答复:)

0 个答案:

没有答案