Maison > développement back-end > C++ > Comment corriger l'erreur 'passer const xxx comme argument 'this' de la fonction membre élimine les qualificatifs' en C ?

Comment corriger l'erreur 'passer const xxx comme argument 'this' de la fonction membre élimine les qualificatifs' en C ?

Barbara Streisand
Libérer: 2024-12-10 08:34:10
original
239 Les gens l'ont consulté

How to Fix

Résolution d'erreur : gestion de « Passer l'argument Const en tant qu'argument « This » 

Lorsque vous rencontrez l'erreur « passer const xxx en tant qu'argument « this » de la fonction membre, les qualificatifs sont supprimés , " cela indique qu'une fonction non membre const est appelée sur un objet const. Dans ce cas, le problème survient lors de l'accès aux méthodes getId() et getName() des objets StudentT stockés dans un std::set.

Analyse du problème

Les objets dans std::set sont stockés sous const StudentT. Lors de l’appel de getId() et getName() lors du déréférencement de l’itérateur (*itr), le compilateur détecte une incompatibilité. Les fonctions membres ne sont pas const, mais l'objet accédé est const.

Solution

Pour résoudre ce problème, les fonctions membres getId() et getName() doivent être déclarées comme méthodes const :

int getId() const {
    return id;
}
string getName() const {
    return name;
}
Copier après la connexion

En les déclarant comme méthodes const, cela garantit qu'elles ne modifieront pas l'objet StudentT, ce qui permet de les appeler en toute sécurité sur const objets.

Considération supplémentaire

L'opérateur< doit également être déclarée comme méthode const, car elle est appelée sur les objets const StudentT lors de l'exécution d'opérations d'ensemble :

inline bool operator< (const StudentT & s1, const StudentT & s2) {
    return s1.getId() < s2.getId();
}
Copier après la connexion

En la déclarant comme const, elle garantit que l'opérateur ne modifie pas les objets comparés.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal