Veröffentlicht 13. September 200519 j Ich schon wieder Ich habe ein Map erstellt… private: std::map<long, CKanal*> m_kanal; [/PHP] Diese möchte ich im destruktor wieder vernichten. [PHP] CGasse::~CGasse() { std::map<CKanal*>::iterator it; for (it = m_kanal.begin(); it != m_kanal.end(); ++it) { CKanal *k = *it; delete k; } } Allerdings kommen da eine Menge Fehlermeldungen, und ich weiß nicht, woran es liegt… Fehlermeldiungen: --------------------Konfiguration: COM Server - Win32 Debug-------------------- Kompilierung läuft... Gasse.cpp C:\SOFTWARE\COM Server\Gasse.cpp(21) : error C2976: 'map' : Nicht genuegend Vorlagenargumente c:\programme\microsoft visual studio\vc98\include\map(140) : Siehe Deklaration von 'map' C:\SOFTWARE\COM Server\Gasse.cpp(21) : error C2027: Verwendung des undefinierten Typs "map<class CKanal *>" C:\SOFTWARE\COM Server\Gasse.cpp(21) : error C2065: 'iterator' : nichtdeklarierter Bezeichner C:\SOFTWARE\COM Server\Gasse.cpp(21) : error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'it' C:\SOFTWARE\COM Server\Gasse.cpp(21) : error C2065: 'it' : nichtdeklarierter Bezeichner C:\SOFTWARE\COM Server\Gasse.cpp(22) : error C2679: Binaerer Operator '=' : Kein Operator definiert, der einen rechtsseitigen Operator vom Typ 'class std::_Tree<long,struct std::pair<long const ,class CKanal *>,struct std::map< long,class CKanal *,struct std::less<long>,class std::allocator<class CKanal *> >::_Kfn,struct std::less<long>,class std::allocator<class CKanal *> >::iterator' akzeptiert (oder keine geeignete Konvertierung moeglich) C:\SOFTWARE\COM Server\Gasse.cpp(23) : error C2100: Zeigeroperation ungueltig C:\SOFTWARE\COM Server\Gasse.cpp(23) : error C2440: 'initializing' : 'int' kann nicht in 'class CKanal *' konvertiert werden Die Konvertierung eines ganzzahligen Typs in einen Zeigertyp erfordert ein reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat Fehler beim Ausführen von cl.exe. COM Server.dll - 8 Fehler, 0 Warnung(en) Vielen Dank schon mal!
13. September 200519 j std::map<long, CKanal*> // ... std::map<CKanal*> Passt irgendwie nicht zusammen...
13. September 200519 j Ok, das hätte ich auch selber sehen können :floet: nun gibt es nur noch einen Fehler... Kompilierung läuft... Gasse.cpp C:\SOFTWARE\COM Server\Gasse.cpp(21) : error C2440: 'initializing' : 'struct std::pair<long const ,class CKanal *>' kann nicht in 'class CKanal *' konvertiert werden Kein benutzerdefinierter Konvertierungsoperator verfuegbar, der diese Konvertierung durchfuehren kann, oder der Operator kann nicht aufgerufen werden Fehler beim Ausführen von cl.exe. COM Server.dll - 1 Fehler, 0 Warnung(en) Woran liegt nun das schon wieder?
13. September 200519 j Das liegt daran, dass std::map::iterator auf ein std::pair verweist. Mit it->first kommst du an den Schlüssel (long), mit it->second an den Wert (CKanal*).
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.