I eine STL Karte in C haben ++, wo der Schlüssel ein unsigned int ist und der Wert eine Klasse, deren Konstruktor ist:‚keine passende Funktion zum Aufruf‘ Fehler bei Klasse in eine STL Karte Einfügen
Foo::Foo(unsigned int integerValue){
//Some stuff
}
zu anderen Klasse habe ich declarated die std :: map in der Kopfzeile:
private:
std::map<unsigned int, Foo> *m_mapFoo;
und in der CPP-Datei habe ich es und eingefügt Instanzen von Foo:
m_mapFoo = new std::map<unsigned int, Foo>;
m_mapFoo->insert(0, new Foo(0));
m_mapFoo->insert(1, new Foo(1));
Aber ich bin immer die folgende Fehlermeldung an den Einsatzmethoden:
no matching function for call to ‘std::map<unsigned int, Foo, std::less<unsigned int>, std::allocator<std::pair<const unsigned int, Foo> > >::insert(const unsigned int&, Foo*)’
ähnliches Problem bei find-Methode:
m_mapFoo.find(0)->second->someFunctionIntoFooClass();
Wo der Fehler genau ist die folgende:
request for member ‘find’ in ‘((Foo*)this)->Foo::m_mapGeoDataProcess’, which is of non-class type ‘std::map<unsigned int, Foo, std::less<unsigned int>, std::allocator<std::pair<const unsigned int, Foo> > >*’
Zusatz Hinweise: Ich habe keinen Foo-Kopierkonstruktor, aber ich glaube nicht, dass das das Problem ist.
Hilfe zum Verständnis dieser Fehler?
Wie wollen Sie in einer Karte kopieren erwarten, wenn Sie keine Kopie Konstruktor? – Pubby
Ich habe rund um stackoverflow gelesen und einige Leute sagen, Sie müssen, manche sagen, Sie brauchen nicht. Aber ich weiß nicht, ob das nur für die Einfügung von [] gilt und nicht die Methode. Siehe http://stackoverflow.com/questions/1478330/c-stl-map-with-a-custom-class-as-second-type –
Sie benötigen den Kopierkonstruktor für 'insert'. 'emplace' braucht es allerdings nicht. – Pubby