缺少类型说明符 - 声明静态成员后假定为 int 错误

Posted

技术标签:

【中文标题】缺少类型说明符 - 声明静态成员后假定为 int 错误【英文标题】:missing type specifier - int assumed Error after declaration of static member 【发布时间】:2018-06-10 17:54:08 【问题描述】:

编译我的代码后,我收到以下错误消息:

错误 C4430 缺少类型说明符 - 假定为 int。注意:C++ 没有 在第 21 行支持 default-int

我真的不知道为什么 AssetManager 会检索该错误,因为我包含了所需的所有内容... 我的代码:

游戏.hpp

#pragma once
#include "SDL.h"
#include "SDL_image.h"
#include <iostream>
#include <vector>
#include "AssetManager.hpp"

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

    void init(const char* title, int xpos, int ypos, int width, int height, bool fullscreen);

    void handleEvents();
    void update();
    bool running()  return isRunning; ;
    void render();
    void clean();

    static AssetManager* assets;
////////

资产管理器.hpp

#pragma once
#include <map>
#include <string>
#include "TextureManager.hpp"
#include "Vector2D.hpp"
#include "ECS.hpp"

class AssetManager 
public:
    AssetManager(Manager* man);
    ~AssetManager();

    void AddTexture(std::string id, const char* path);
    SDL_Texture* GetTexture(std::string id);

private:
    Manager* manager;
    std::map<std::string, SDL_Texture*> textures;
;

【问题讨论】:

那么哪一行有错误? 静态 AssetManager* 资产; 在您的 game.hpp 文件中,您有函数 bool running() return isRunning; ; 但变量 isRunning 似乎不存在。 我没有在课堂游戏中包含整个代码。该程序完全可以运行到我实现 AssetManager... 我的猜测是,AssetManager.hpp 间接包含game.hpp,所以现在你有了一个循环包含。 【参考方案1】:

我认为这是一个循环依赖的问题。尝试像这样对 AssetManager 进行前向声明:- 资产管理器类;而不是 #include "AssetManager.hpp" in game.hpp

【讨论】:

以上是关于缺少类型说明符 - 声明静态成员后假定为 int 错误的主要内容,如果未能解决你的问题,请参考以下文章

错误:缺少类型说明符 - 假定为 int。 C++ 不支持默认 int

错误 C4430:缺少类型说明符 - 假定为 int?

错误 4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数 [重复]

缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int----;解决方法

WinPcap应用程序:error: C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int

error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int