缺少类型说明符 - 假定为 int(类问题)

missing type specifier - int assumed (class issue)

本文关键字:int 问题 类型 说明符      更新时间:2023-10-16

所以我正在使用sfml制作一个非常简单的游戏,但遇到了这个问题。在使用相同的类和设计等之前,我制作了一个游戏。但是我在Player* player;和另一个班级Level level中遇到了问题.

这次我做错了什么。我不记得上次对这个特定部分做了什么(因为我没有遇到这个问题),而且我不再有文件了。

这里是头文件。

#pragma once
//level.h
//includes
#include "Player.h"
#include "GameObject.h"
#include <vector>
#include <ctime>
#include <SFMLWindowKeyboard.hpp>
//usings
using std::vector;
using sf::Keyboard;
class Level
{
public:
    Level();
    ~Level();
    void Update(), Render(sf::RenderWindow& window);
private:
    Player* player;
    void HandleInput(), Randomise(), Reset(), UserInterface(), Collisions(), GenerateObjects(), MoveObjects();
    vector<GameObject*> levelObjects;
    sf::FloatRect rectCollectible[5], rectPlayer;
    sf::Text timeText, scoreText;
    sf::Font font;
    sf::SoundBuffer collectibleBuffer;
    sf::Sound collectibleSound;
    sf::Texture spritesheet;
    bool mute, paused;
    int randomiser, spawnDelay, maxObjects;
};

这似乎是一个循环依赖问题。请参阅解决标头包含循环依赖项

您需要转发声明 Player 并取出 Player.h 的包含,如下所示:

#pragma once
//level.h
//includes
//#include "Player.h"
#include "GameObject.h"
#include <vector>
#include <ctime>
#include <SFMLWindowKeyboard.hpp>
//usings
using std::vector;
using sf::Keyboard;
class Player;
class Level
{
public:
    Level();
    ~Level();
    void Update(), Render(sf::RenderWindow& window);
private:
    Player* player;
    void HandleInput(), Randomise(), Reset(), UserInterface(), Collisions(), GenerateObjects(), MoveObjects();
    vector<GameObject*> levelObjects;
    sf::FloatRect rectCollectible[5], rectPlayer;
    sf::Text timeText, scoreText;
    sf::Font font;
    sf::SoundBuffer collectibleBuffer;
    sf::Sound collectibleSound;
    sf::Texture spritesheet;
    bool mute, paused;
    int randomiser, spawnDelay, maxObjects;
};