C++错误:C4430和C2143错误在不可能的地方

C++ Error: C4430 and C2143 Error at an impossible place

本文关键字:错误 不可能 C2143 C4430 C++      更新时间:2023-10-16

我试图在互联网上搜索此错误的答案,但问题似乎总是有人忘记将返回说明符 int 添加到主函数中。这很奇怪,因为错误被抛在一行上,不可能有什么错误:

#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(有时重新启动后它不再给我那些奇怪的错误),但这没有帮助。

编辑:很高兴知道为什么一个问题被否决,这样我就可以避免在下一个问题上犯同样的错误。谢谢。

你忘了放置

#include <map>

在您的标题中。

因此,编译器无法解析类型 std::map<int, Res*>

相关文章: