verkettete Liste in Klasse



  • Wie implementiert man eine STL Liste innerhalb einer Klasse?

    class Testklasse{
    
       public:
            list<int> l_Testliste
    };
    

    funzt leider nicht..

    wenn ich´s nur im Konstruktor mache gehts, kann aber nicht auf die Liste zugreifen.

    Testklasse::Testklasse(){list<int>l_Testliste;}
    


  • Wie äußert sich dieses "funktioniert nicht"? (ich kenne keinen Compiler, dessen Fehlermeldungen auf "das Programm ist falsch" beschränken ;))

    (PS: Ist das fehlende Semikolon hinter der Member-Definition ein C&P-Fehler oder steht das so in deinem Originalcode?)



  • Versuch es mal mit dem Beispiel.
    Klappt auch mit dem gcc.

    #include <list>
    #include <iostream>
    
    class A
    {
    public:
      A();
    
      std::list<int> m_iList;
    };
    
    A::A()
    {
    }
    
    int main()
    {
      A a;
      a.m_iList.push_back( 1 );
      a.m_iList.push_back( 2 );
    
      std::list<int>::iterator iter    (a.m_iList.begin());
      std::list<int>::iterator iterEnd (a.m_iList.end());
    
      while ( iter != iterEnd )
        {
          std::cout << *iter << std::endl;
          ++iter;
        }
    
      return 1;
    }
    


  • hmmm..... ich hab mein prog noch nicht umgebaut, aber mit deinem beispielcode
    klappts´s.

    Kann es tatsächlich am: "std::......." gelegen haben?

    Und warum wird der Iterator (meist) immer mit ++i und nicht mit i++ erhöht?

    @Stoll....

    Das Semikolon hatte ich "Leider" nicht vergessen 😉



  • Siehe FAQ.



  • ahhhh.... zumindest der groschen ist gefallen....(++i oder i++)

    im nachhinein eigentlich logisch... 😉

    was man nich alles wissen muss, kann, sollte 😉



  • Auch die Tatsache, dass ich mir den Ende-Iterator merke und dann
    die Schleife durchlaufe hat seinen Grund.
    Ebenso, dass ich den Konstruktor benutze also

    iter (m_iList.begin() );

    und nicht

    iter = m_iList.begin();

    Nachdem was Du jetzt gelesen hast kommst du vielleicht selber drauf, warum
    ich das mache. In dem Beispiel stecken also mehr Informationen außer die
    Beantwortung deiner Frage.

    Viel Spaß noch.


Anmelden zum Antworten