PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Iterator in einer Template Klasse benutzen ??



jancarsten
13-12-2005, 18:31
HI!

Ich möchte mir eine Kleine Template Klasse schreiben. In dieser Template Klasse brauche ich den Interator. Wie kann ich den Iterator in einer Template Klasse Benutzen? Geht das überhaupt??


template<class Typ>

class myCon
{

private:
Typ _data;
list<Typ> myListe;

list<Typ>::iterator it;// Fehlermeldung




public:

void setDataBack(Typ newData);
Typ getData();
void printData();
myCon(void){};
~myCon(void){};
};


Fehlermeldung:



warning C4346: 'std::list<_Ty>::iterator': Abhängiger Name ist kein Typ
Präfix mit 'typename' zum Angeben eines Typs
myCon.h(40): Siehe Verweis auf Instanziierung der kompilierten Klassenvorlage 'myCon<Typ>'
error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'it'
error C2501: 'myCon<Typ>::it': Fehlende Speicherklasse oder Typspezifizierer


Gebe ich den Typ direkt an also so: list<int>::iterator it; Funktioniert es aber eben so will ich es nicht.

Joghurt
13-12-2005, 18:46
Dafür gibt es die Anweisung typename:
typename list<Typ>::iterator it;Ansonsten weiss der Compiler nicht, dass list<Typ>::iterator ein Typ ist.

jancarsten
13-12-2005, 18:51
oki man dankt. Jetzt geht es :D