std::map kein geeigneter Standardkonstruktor vorhanden
-
#include <map> class A { public: A(const std::string &c) { // do something } }; int main() { std::map<int, std::pair<A, int>> m_map; A tmp("foo"); m_map[0] = std::make_pair(tmp, 0); return 0; }
1>------ Erstellen gestartet: Projekt: pair_test, Konfiguration: Debug Win32 ------ 1> main.cpp 1>c:\program files (x86)\microsoft visual studio 12.0\vc\include\utility(88): error C2512: 'A': Kein geeigneter Standardkonstruktor verfügbar 1> c:\program files (x86)\microsoft visual studio 12.0\vc\include\utility(86): Bei der Kompilierung der Klassen-template der std::pair<A,int>::pair(void)-Memberfunktion 1> c:\program files (x86)\microsoft visual studio 12.0\vc\include\tuple(746): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template "std::pair<A,int>::pair(void)". 1> c:\users\koalabärchen\documents\visual studio 2013\projects\pair_test\pair_test\main.cpp(17): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template "std::pair<A,int>". ========== Erstellen: 0 erfolgreich, 1 fehlerhaft, 0 aktuell, 0 übersprungen ==========
Wie kann ich das Problem lösen?
-
A() = default;
in Klassendefinition einfügen.
Bzw.A() {}
Wenn kein C++11 Support.
-
Würde da nicht
m_map.insert(make_pair(0, make_pair(A("foo"), 0)))
helfen?
~Edit: Code~