McBirne Geschrieben 13. September 2005 Geschrieben 13. September 2005 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! Zitieren
Klotzkopp Geschrieben 13. September 2005 Geschrieben 13. September 2005 std::map<long, CKanal*> // ... std::map<CKanal*> Passt irgendwie nicht zusammen... Zitieren
McBirne Geschrieben 13. September 2005 Autor Geschrieben 13. September 2005 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? Zitieren
Klotzkopp Geschrieben 13. September 2005 Geschrieben 13. September 2005 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*). Zitieren
McBirne Geschrieben 13. September 2005 Autor Geschrieben 13. September 2005 Vielen Dank!!! Es funktioniert jetzt... Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.