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~


Anmelden zum Antworten