std::multimap keine first() oder second()
-
Hallo,
ich benutze eine std::multimap. Es gibt ja nun viele Beispiele im Netz wie hier: http://www.cplusplus.com/reference/map/multimap/find/
Ich habe eine
std::multimap<U16, MyClass*>::iterator it = ctContainer->begin(); while ( it != ctContainer->end() ) { MyClass* t = it->second(); const U16 curNumber = it.first();second() und first() gibt es nicht??
Ich entwickle im QtCreator. Win7 Pro 64bit. mingw64. Was amche ich falsch??
VG LesPaul
-
first und second sind Membervariablen, keine Funktionen.
-
Danke!
-
Ich weiß nihct was ich verändert habe. bis jetzt hat alles gut funktioniert.
Ich habe die multimap wie im Eröffnungsthread, mit dem Unterschied, dass ich
die SecondvaluesMyClass*durch eine struct ersetzt:
struct MyStruct { std::string ms_label; double ms_double = 0.; };also steht da
std::multimap<double, MyStruct>* curMM = getMultiMap(); std::multimap<double, MyStruct>::iterator itMM = curMM->begin();sodass:
mainwindow.cpp:668: Fehler: use of deleted function 'MyStruct::MyStruct(const MyStruct&)'
MyStruct ms = itMM->second;
^Bis heut hat das eig. recht gut gefunzt

-
Dann zeig mal das gesamte struct. Denn die Fehlermeldunge besagt, dass du den Kopierkonstruktor deleted hast.
-
Skym0sh0 schrieb:
Dann zeig mal das gesamte struct. Denn die Fehlermeldunge besagt, dass du den Kopierkonstruktor deleted hast.
Hier:
struct MyStruct { std::string _ms_label; double _ms_double = 0. ; X_Ptr _ms_x_ptr; QGeocoordinate* _ms_coord = nullptr; };und mein X_Ptr kann man hier nachlesen:
https://www.c-plusplus.net/forum/p2447408#2447408
-
Wenn du einen move-Konstruktor definierst, dann wird automatisch der Kopierkonstruktor deleted. Das hast du bei X_Ptr gemacht. Dadurch hat MyStruct auch keinen Kopierkonstruktor.
-
patrick246 schrieb:
... Dadurch hat MyStruct auch keinen Kopierkonstruktor.
Danke!