kuekenMcNugget Geschrieben 5. Februar 2005 Geschrieben 5. Februar 2005 Hallo an alle... ich habe folgendes Problem. Ich will ein List-Objekt ausgeben, bekomme dabei aber immer eine Fehlermeldung mit der ich nichts anfangen kann. list<string> O; O.push_back("Test 1"); O.push_back("Test 2"); O.push_back("Test 3"); for(int i = 0; i < O.size(); ++i) cout << i << ": " << O[i] << endl; Wenn ich diesen Code so ausführe, bekomme ich immer folgende Fehlermeldung: "Binaerer Operator '[' : 'class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::ch ar_traits<char>,class std::allocator<char> > > >' definiert diesen Operator oder eine Konvertierung in einen für den vordefinierten Operator geeigneten Typ nicht" Ehrlich gesagt verstehe ich nur Bahnhof. Was mache ich falsch??? Gruß Christian Zitieren
Klotzkopp Geschrieben 5. Februar 2005 Geschrieben 5. Februar 2005 Ganz einfach: std::list bietet keinen indexbasierten Zugriff über den operator[]. Das kann nur std::vector. Bei std::list musst du mit iteratoren arbeiten: for(list<string>::iterator i = O.begin(); i != O.end(); ++i) cout << *i << endl;[/CODE] Zitieren
kuekenMcNugget Geschrieben 6. Februar 2005 Autor Geschrieben 6. Februar 2005 Danke für die Antwort. Hätte ich auch selbst drauf kommen können. Aber wenn ich folgenden Code ausführe bekomme ich eine andere Fehlermeldung. list<string> O; O.push_back("Test 1"); O.push_back("Test 2"); O.push_back("Test 3"); for(list<string>::iterator i = O.begin(); i != O.end(); ++i) cout << *i << endl; Fehlermeldung: Binaerer Operator '<<' : Kein Operator definiert, der einen rechtsseitigen Operator vom Typ 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' akzeptiert (oder keine geeignete Konvertierung moeglich) Was mache ich jetzt schon wieder falsch bzw. was habe ich vergessen? Gruß, Christian Zitieren
carstenj Geschrieben 6. Februar 2005 Geschrieben 6. Februar 2005 Hi, eigentlich ist der Code völlig korrekt. Welchen Kompiler benutzt du denn? Welche STL? Hast du auch alle Header eingebunden? #include <iostream> #include <string> #include <list> Bei mir funktioniert der ohne Probleme. Ich benutze den gcc-Version 3.3.2 20031218 . Falls du den VC6 benutzt, der hat teilweise Bugs in der STL: http://www.dinkumware.com/vc_fixes.html Allerdings weiss ich natürlich nicht, obs daran liegt, da ich den leider nicht zur Verfügung habe. 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.