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;