缺少类型说明符 - 声明静态成员后假定为 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
错误 4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数 [重复]
缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int----;解决方法
WinPcap应用程序:error: C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int