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.
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.
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; }
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.
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(); }
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!