Sorry, wenn die Formatierung ein bisschen aus ist, bin ich neu hier. Ich habe auch versucht, nach Lösungen zu suchen, aber ich konnte keine finden, die funktionierte.Versuch, Operator ++ zu überladen, kann Elementfunktion ohne Objekt nicht aufrufen
Ich versuche, einen Iterator für eine binäre Suchbaumklasse zu erstellen. Sehr grob, sieht mein Code wie
template<class Key, class Value>
class BST {
protected:
//stuff
public:
//stuff
class iterator {
public:
//member functions
iterator& operator++() {
//gets next node
}
}
}
Also in meiner Hauptfunktion, ich einen Iterator mit
BST<string, int>::iterator it = bst.begin()
erstellen und es funktioniert. Ich kann mit dem Iterator auf den Knoten zugreifen. Aber in der nächsten Zeile, wenn ich versuche zu
it++;
erhalte ich Compiler-Fehler, dass ich „Memberfunktion nicht ... ohne Objekt aufrufen können“. Ich verstehe nicht warum nicht? Wenn ich operator ++ auf 'it' anrufe, sollte es nicht einfach auf 'it' operieren?
Der Operator, den Sie überladen haben, ist eine Vorinkrementierung: 'iterator & operator ++ (int)' für die Nachinkrementierung. –