Wie Zugriff durch Iterator auf einen Index-Operator[] ?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Wie Zugriff durch Iterator auf einen Index-Operator[] ?

    Hallo,

    ich habe eine Klasse, welche mir durch einen Operator die Zeilenanzahl eines Obejekts liefert

    Quellcode

    1. std::string& operator[](unsigned int i)
    2. {
    3. return get_line(i);
    4. }



    Nun habe ich aber mehere Objekte vom Typ dieser Klasse in ein Vector abgegt.. ich möchte nun diesen Vector mit Iteratoren durchlaufen, und mir zB die 3 Zeile eines jeden Objekts anzeigen.. ich habe das so implementiert:

    Quellcode

    1. void output(std::vector<AsciiPicture>& asciivector)
    2. {
    3. std::vector<AsciiPicture>::const_iterator c_iter;
    4. std::sort(asciivector.begin(), asciivector.end());
    5. for (c_iter = asciivector.begin(); c_iter != asciivector.end(); c_iter++)
    6. {
    7. std::cout<<c_iter->asciipicture[2]<<std::endl;
    8. }
    9. }


    Nun bekomme ich aber die Fehlermeldung das asciipicture keine Member-Funktion von der Klasse AsciiPicture ist, daher meine Frage - wie komme ich an die Zeilen für jedes Objekt ran?
    Forza Italia!!!!!!
  • Re: Wie Zugriff durch Iterator auf einen Index-Operator[] ?

    ganz einfach wenn man mal dahinter gekommen ist -.-
    Dein asciipicture hat kein Element asciipicture (logisch)
    auf ein solches greifst du aber zu.

    Versuchs mal damit:

    Quellcode

    1. void output(std::vector<AsciiPicture>& asciivector)
    2. {
    3. std::vector<AsciiPicture>::const_iterator c_iter;
    4. std::sort(asciivector.begin(), asciivector.end());
    5. for (c_iter = asciivector.begin(); c_iter != asciivector.end(); c_iter++)
    6. {
    7. std::cout<<(*c_iter)[2]<<std::endl;
    8. }
    9. }