Veröffentlicht 5. Februar 200520 j 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
5. Februar 200520 j 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]
6. Februar 200520 j 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
6. Februar 200520 j 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.
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.