iterator für eine template-liste erstellen
-
Hi, hoffentlich ist der Titel nicht falsch gewählt worden, in ein paar Google-Suchen habe ich schon Infos gefunden die mir weitergeholfen hätten, haben sie aber nicht, das Problem besteht immer noch. Es geht um folgendes :
template<typename item_type> class Tabelle { private: list<item_type> aListe; public: .... };Ich möchte einen Iterator für meine Liste erstellen, ich habe es bereits folgendermaßen ausprobiert :
list<item_type>::iterator Iter;Allerdings hat das nicht funktioniert, ich habe in den Google-Suchergebnissen auch andere Methoden gefunden :
typedef typename list<item_type>::iterator iter;Diese Methode hat leider auch nicht funktioniert. Versuche ich da etwas was rein programmiertechnisch nicht geht? ( was ich bezweifle ) oder wo mache ich meine Fehler, ich bedanke mich schonmal im voraus! ( Verwendete Entwicklungsumgebung, Visual Studio 2010 )
-
Versuchs mal mit list<item_type>::const_iterator
-
Doch, geht. Siehe std::sort. Was kommt bei letztere denn für eine Fehlermeldung?
-
Ich vermute mal, du willst deiner Klasse "Tabelle" einen Iterator verpassen, um damit auf das private Element "aListe" mit einem "Tabelle::begin()" usw. zuzugreifen.
Ich würde da keinen normalen iterator anbieten, sondern einen const_iterator, da ohne dem const ein private für aListe unnötig ist, mach es public und du hast keine Probleme mehr.
-
also bisjetzt schauts so aus :
#ifndef TABLE_H #define TABLE_H #include <iostream> #include <list> using namespace std; template<typename item_type> class Tabelle { public: list<item_type> aListe; list<item_type>::const_iterator aIter; Tabelle(){}; ~Tabelle(){}; }; #endif
-
phcn.fraggle schrieb:
#ifndef TABLE_H #define TABLE_H #include <iostream> #include <list> using namespace std; template<typename item_type> class Tabelle { public: list<item_type> aListe; list<item_type>::const_iterator aIter; Tabelle(){}; ~Tabelle(){}; }; #endifDas
using namespace std;hat in einer Header-Datei nichts zu suchen. Templateparameter fangen üblicherweise mit einem Großbuchstaben an (Das ist nur eine Konvention). Ich frage mich, was der Sinn von aIter ist. Die Semikolons hinter } bei Funktionen sind überflüssig. Deine benutzerdefinierten Default-Konstruktor und Destruktor an sich sind auch überflüssig.Jepp, hier fehlt ein
typename...