我试图在互联网上搜索这个错误的答案,但问题似乎总是有人忘了将返回说明符int添加到main函数中。这很奇怪,因为错误被抛到一条线上,没有什么可能是错的:
#ifndef ResMan_H
#define ResMan_H
#include "Loader.h"
#include <iostream>
template<class Res>
class ResourceManager {
private:
std::map<int, Res*> resourceList; //C4430 & C2143
Loader<Res> * loader;
public:
ResourceManager(Loader<Res> * loader);
void load(int key, std::string);
Res* request(int key);
void unload(int key);
void dispose();
};
#endif
错误在线投放:
std::map<int, Res*> resourceList;
Loader.h文件只包含:
#ifndef Loader_H
#define Loader_H
#include <iostream>
template<class Res>
class Loader {
public:
virtual Res* loadFromFile(std::string filePath);
};
#endif
错误在于我错过了一个“;”并且我忘记了某处的类型说明符,但事实并非如此。我尝试重新启动VS13(有时它在重启后不再给我那些奇怪的错误),但这没有帮助。
编辑:很高兴知道为什么问题会被投票,这样我就可以避免在下一个问题上做同样的错误。感谢。
答案 0 :(得分:1)
你忘了放置
#include <map>
在标题中。
因此,编译器无法解析类型std::map<int, Res*>
。