Komisch linker-Fehler mit static std::map
Warum bekomme ich linker-Fehler, wenn ich versuche zu kompilieren in Visual Studio 2008
#include <stdafx.h>
#include <iostream>
#include <map>
#include <string>
class MyClass
{
public:
MyClass () { };
virtual ~MyClass() {};
static std::string niceString (std::map<int, int> mappp) { _myMap = mappp; return "nice string"; };
private:
static std::map<int, int> getMap ( ) { return _myMap; };
static std::map<int, int> _myMap;
};
int main(){
std::map<int, int> mappp;
mappp[1] = 1;
std::cout << MyClass::niceString(mappp);
}
Fehler:
Error 1 error LNK2001: unresolved external symbol "private: static class std::map<int,int,struct std::less<int>,class std::allocator<struct std::pair<int const ,int> > > MyClass::_myMap" (?_myMap@MyClass@@0V?$map@HHU?$less@H@std@@V?$allocator@U?$pair@$$CBHH@std@@@2@@std@@A) test22.obj test22
- Im wesentlichen ein Duplikat der Static struct linker-Fehler unter anderem.
- mögliche Duplikate von Definition statischer member in C++
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie erklärt, die statische member -
_myMap
, aber nicht definiert. Fügen Sie diese Zeile direkt oberhalbint main()
:Denke, dass es wie eine Funktion, die zwar deklariert, aber nicht definiert, in jedem .cpp - Datei, erhalten Sie ein linker-Fehler, wenn Sie es verwenden.