Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/146.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 无序地图LNK2001_C++_Unordered Map - Fatal编程技术网

C++ 无序地图LNK2001

C++ 无序地图LNK2001,c++,unordered-map,C++,Unordered Map,我试图将项目放入二维无序地图中,如下所示: #include <unordered_map> #include <string> #include <vector> class Scene { protected: static std::unordered_map<std::string, std::unordered_map<std::string, Mesh>> Meshes; public: static v

我试图将项目放入二维无序地图中,如下所示:

#include <unordered_map>
#include <string>
#include <vector>

class Scene {
protected:
    static std::unordered_map<std::string, std::unordered_map<std::string, Mesh>> Meshes;

public:
    static void loadMesh(std::string filename) {
        std::string meshName;
        std::vector<GLfloat> v;
        std::vector<GLfloat> vn;
        etc..

        Meshes[filename].emplace(std::make_pair(meshName, Mesh(v, vn, vt, f)));  // This causes the error
    }
}
但它总是给我一个很长的错误:

Error   2   error LNK2001: unresolved external symbol "protected: static class        std::unordered_map<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::unordered_map<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class Mesh,struct std::hash<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,struct std::equal_to<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class std::allocator<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const ,class Mesh> > >,struct std::hash<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,struct std::equal_to<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class std::allocator<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const ,class std::unordered_map<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class Mesh,struct std::hash<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,struct std::equal_to<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class std::allocator<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const ,class Mesh> > > > > > Scene::Meshes" (?Meshes@Scene@@1V?$unordered_map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$unordered_map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@VMesh@@U?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@VMesh@@@std@@@2@@2@U?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$unordered_map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@VMesh@@U?$hash@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@VMesh@@@std@@@2@@2@@std@@@2@@std@@A)   C:\Users\Gebruiker\Documents\Visual Studio 2013\Projects\C++ Projects\Engine\Engine\Scene.obj
Error 2 Error LNK2001:未解析的外部符号“protected:static class std::unordered_map Scene::mesh”(?Meshes@Scene@@1V?$无序_map@V?$basic_string@DU?$char_traits@D@性病病毒$allocator@D@2@@std@@V?$无序_map@V?$basic_string@DU?$char_traits@D@性病病毒$allocator@D@2@@std@@VMesh@@U$hash@V?$basic_string@DU?$char_traits@D@性病病毒$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@性病病毒$allocator@D@2@@std@@@2@V?$allocator@U?$p空气@$$CBV?$basic_string@DU?$char_traits@D@性病病毒$allocator@D@2@@std@@VMesh@@@std@@@2@@2@U?$hash@V?$basic_string@DU?$char_traits@D@性病病毒$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@性病病毒$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@性病病毒$allocator@D@2@@std@@V?$无序_map@V?$bas集成电路_string@DU?$char_traits@D@性病病毒$allocator@D@2@@std@@VMesh@@U$hash@V?$basic_string@DU?$char_traits@D@性病病毒$allocator@D@2@@std@@@2@U?$equal_to@V?$basic_string@DU?$char_traits@D@性病病毒$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@性病病毒$allocator@D@2@@@std@@@VMesh@@@std@@@2@@@2@@@std@@@2@@@std@@@A)C:\Users\Gebruiker\Documents\Visual Studio 2013\Projects\C++Projects\Engine\Engine\Scene.obj

是我使用无序贴图的方式不对,还是我遗漏了什么?

您声明了
网格,但没有定义它。添加一行如下内容

std::unordered_map<std::string, std::unordered_map<std::string, Mesh>> Scene::Meshes;
std::无序地图场景::网格;

到一个(且仅一个).cpp文件。

您没有定义该静态成员。有关详细信息,请参阅重复问题如果您在这样的类中声明一个静态变量,则需要在某个地方定义它一次,通常在相应的.cpp文件中:
std::unordered\u map Scene::mesh;
std::unordered_map<std::string, std::unordered_map<std::string, Mesh>> Scene::Meshes;