Heim > Backend-Entwicklung > C++ > Wie behebt man den Fehler „Beim Übergeben von const xxx als ‚dieses' Argument der Mitgliedsfunktion werden Qualifikationsmerkmale verworfen' in C?

Wie behebt man den Fehler „Beim Übergeben von const xxx als ‚dieses' Argument der Mitgliedsfunktion werden Qualifikationsmerkmale verworfen' in C?

Barbara Streisand
Freigeben: 2024-12-10 08:34:10
Original
239 Leute haben es durchsucht

How to Fix

Fehlerbehebung: Behandlung von „Übergabe des Const-Arguments als „dieses“ Argument“

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.

Problemanalyse

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.

Lösung

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;
}
Nach dem Login kopieren

Durch die Deklaration als const-Methoden wird garantiert, dass sie das StudentT-Objekt nicht ändern, sodass es sicher ist, sie auf const aufzurufen Objekte.

Zusätzliche Überlegungen

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();
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage