Ich versuche, verknüpfte Liste Klasse zu erstellen und die Iteratoren zu definieren, ich habe alle von ihnen mit Ausnahme der letzten. Ich erhalte nicht, wie sie zu beheben, ich diese Fehlermeldung erhalten, wenn ich meinen Code zu kompilieren: 'operator ='!keine Übereinstimmung für Operator! =
kein Spiel für in ‚recList.SortedList :: beginnt mit T = Aufnahme = recList.SortedList :: Ende mit T = Record ' a1q1main.cpp: 114: 37: Hinweis: Kandidaten sind: Sortedlist.h: 112: 11: Hinweis: SortedList :: Iterator SortedList :: Iterator :: Operator! = (Bool) [mit T = Record, SortedList :: iterator = SortedList :: iterator] sortedlist.h: 112: 11: Anmerkung: es gibt keine Konvertierung für Argument 1 von 'SortedList :: Iterator' auf 'Bool'
Es hält an Anzeige dieses Fehlers, egal was ich mache Ich habe erklärt Operator == und alles ist in Ordnung, aber die = klagt Hier ist der Code:
class SortedList {
struct Node {
T data_;
Node* next_;
Node* prev_;
Node(const T& data = T{}, Node* next = nullptr, Node* prev = nullptr) {
data_ = data;
next_ = next;
prev_ = prev;
}
};
Node* head_;
Node* tail_;
public:
class const_iterator {
protected:
Node* curr_;
public:
const_iterator(Node* p) {
curr_ = p;
}
.........
const_iterator operator--(int) {
const_iterator tmp = *this;
curr_ = curr_->prev_;
return tmp;
}
const T& operator*() const {
return curr_->data_;
}
const_iterator operator==(bool){
return false;
}
const_iterator operator!=(bool){
return true;
}
return;`
Ich brauche die unten aufgeführten Kriterien erfüllen: operator = gibt true zurück, wenn zwei Iteratoren an anderer Stelle Knoten, ansonsten false O (1)
ich die Logik des Betreibers nicht abgeschlossen haben, ich brauche nur das ich bekomme nicht den Fehler richtig zu erklären, so
'operator! =' (In den meisten Fällen) nimmt einen anderen Iterator und gibt einen Bool zurück, überprüfen Sie Ihre Signatur – YiFei
Signatur sollte wie ['Bool Operator! = (L, R);'] (http: // en. cppreference.com/w/cpp/language/operator_comparison). Als eigenständige Freundesfunktion. Oder wahrscheinlich 'bool operator! = (OTHER)' als Mitglied. Sie haben sie so definiert, dass sie ein bool-Argument verwenden und einen Iterator zurückgeben. –
vor allem, wenn ich zwei Parameter zu der Funktion hinzufügen beschwert und sagt, ich muss nur einen Parameter übergeben, zweitens Bool Operator! =() Ändert sich nicht die Situation und der gleiche Fehler erscheint – Oleh