Die DummyNode Deklarationsvariable funktionierte gut, bis ich Iterator-Klasse als verschachtelt geschrieben habe, jetzt gibt es mir einen Fehler ungültige Verwendung von nicht-statischen Daten Mitglied ' LinkedList :: dummyNode‘C++, wenn i Iterator-Klasse entfernt, es funktioniert gut Vorlageungültige Verwendung von nicht-statischen Datenelement 'linkedList <int> :: dummyNode' C++
class linkedList
{
private:
listNode<T> * head, *tail;
listNode<T> * dummyNode = new listNode<T>;
int sz = 0;
public:
class iterator
{
public:
iterator()
{
itrNode = head;
}
void operator ++()
{
try{
if(itrNode == dummyNode)
throw "Sorry this is the end of the list\n";
else
{
itrNode = itrNode->next;
}
}catch(const char * error)
{
cerr << error;
}
}
T& operator *()
{
return *(itrNode->value);
}
void operator --();
private:
listNode<T> * itrNode;
};
linkedList();
~linkedList();
linkedList(T value, int initial_size);
iterator begin();
};
Ihr Konstruktor in der inneren Klasse verweist auf "head", was ein Datenelement der äußeren Klasse ist. Sie sollten stattdessen eine Funktion "linkedlist :: begin" erstellen, die den richtigen Iterator zurückgibt. Wenn Sie direkte Konstruktoren für den Iterator benötigen, benötigt er eine "Linkedlist" als Argument. – jwimberley
Entschuldigung ich kann nicht verstehen, wo ist das Problem damit? und ich habe die Lösung auch nicht verstanden, würdest du bitte den Code schreiben ?! –