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 alsoiter (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.