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!
Klotzkopp Geschrieben 13. September 2005 Geschrieben 13. September 2005 std::map<long, CKanal*> // ... std::map<CKanal*> Passt irgendwie nicht zusammen...
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?
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*).
McBirne Geschrieben 13. September 2005 Autor Geschrieben 13. September 2005 Vielen Dank!!! Es funktioniert jetzt...
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden