Beim Auftreten des Fehlers „Übergabe von const xxx als „dieses“ Argument der Mitgliedsfunktion werden Qualifikationsmerkmale verworfen „zeigt an, dass eine nicht konstante Mitgliedsfunktion für ein konstante Objekt aufgerufen wird. In diesem Fall tritt das Problem auf, wenn auf die Methoden getId() und getName() von StudentT-Objekten zugegriffen wird, die in einem std::set gespeichert sind.
Die Objekte im std::set werden als const StudentT gespeichert. Beim Aufruf von getId() und getName() für die Iterator-Dereferenzierung (*itr) erkennt der Compiler eine Nichtübereinstimmung. Die Mitgliedsfunktionen sind nicht konstant, aber das Objekt, auf das zugegriffen wird, ist konstant.
Um dieses Problem zu beheben, sollten die Mitgliedsfunktionen getId() und getName() als konstante Methoden deklariert werden :
int getId() const { return id; } string getName() const { return name; }
Durch die Deklaration als const-Methoden wird garantiert, dass sie das StudentT-Objekt nicht ändern, sodass es sicher ist, sie auf const aufzurufen Objekte.
Der Operator< sollte auch als const-Methode deklariert werden, da sie bei der Ausführung von Set-Operationen für const-StudentT-Objekte aufgerufen wird:
inline bool operator< (const StudentT & s1, const StudentT & s2) { return s1.getId() < s2.getId(); }
Durch die Deklaration als const wird sichergestellt, dass der Operator die verglichenen Objekte nicht ändert.
Das obige ist der detaillierte Inhalt vonWie behebt man den Fehler „Beim Übergeben von const xxx als ‚dieses' Argument der Mitgliedsfunktion werden Qualifikationsmerkmale verworfen' in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!