Ausgabe einer STL List in einer Const Methode



  • Hallo,

    ich würde gerne in einer const Methode eine Liste ausgeben.

    ostream& Nomen::printMe(ostream& output) const {
        output << wordType << ": " << value << " ";
    
        list<int>::iterator IT;
        for (IT = zeilenListe.begin(); IT != zeilenListe.end(); IT++)
            output << *IT;
    
        output << endl;
        return output;
    }
    

    Nehme mal an, dass das garnicht möglich ist?
    Alternativ könnte ich die Liste auch als Ausgabestring vorher aufbereiten.
    Dazu müsste ich nur wissen, wie ich String und Int-Wert konkatinieren kann.

    Vielen Dank für jede Hilfe.

    Gruß Manuel

    Folgeneder Fehler tritt auf:
    Nomen.cpp:22: error: no match for 'operator=' in 'IT = (((const std::list<int, std::allocator<int> >)((const Word)this)) + 8u)->std::list<_Tp, _Alloc>::begin [with _Tp = int, _Alloc = std::allocator<int>]()'
    /usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/stl_list.h:112: note: candidates are: std::_List_iterator<int>& std::_List_iterator<int>::operator=(const std::_List_iterator<int>&)
    make[2]: *** [build/Debug/Cygwin_4.x-Windows/Nomen.omake[2]: Leaving directory /cygdrive/c/Users/Manuel/Documents/NetBeansProjects/wortIndex\_klausur' make[1]: Leaving directory/cygdrive/c/Users/Manuel/Documents/NetBeansProjects/wortIndex_klausur'



  • Nimm einen const_iterator mit cbegin() und cend(). 🙂 (Wobei der const_iterator eigentlich reicht.)
    PS: Normalerweise überläd man den operator << , sodass du gleich schreiben kannst:

    std::cout << mein_nomen;
    


  • cooky451 schrieb:

    Nimm einen const_iterator mit cbegin() und cend(). 🙂 (Wobei der const_iterator eigentlich reicht.)
    PS: Normalerweise überläd man den operator << , sodass du gleich schreiben kannst:

    std::cout << mein_nomen;
    

    Hi,
    danke, das werd ich gleich ausprobieren.
    Der operator<< ist ja überladen.

    Hab eine Basisklasse, wo der operator<< überladen ist und dann ruf ich printMe() der abgeleiteten Klassen auf.

    Gruß Manuel



  • Hat funktioniert. Viele Dank 🙂

    Gruß Manuel


Anmelden zum Antworten