"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Pourquoi le passage d'un objet Const à une fonction membre non-Const provoque-t-il une erreur de disqualification du qualificateur en C++ ?

Pourquoi le passage d'un objet Const à une fonction membre non-Const provoque-t-il une erreur de disqualification du qualificateur en C++ ?

Publié le 2025-01-14
Parcourir:887

Why Does Passing a Const Object to a Non-Const Member Function Cause a Qualifier Disqualification Error in C  ?

Passer des objets Const en tant qu'argument 'this' : erreur de disqualification du qualificateur

En C , passer des objets const en tant qu'arguments 'this' aux fonctions membres peut entraîner des erreurs "passer 'const xxx' comme 'cet' argument de la fonction membre rejette les qualificatifs". Cela se produit car le compilateur considère la possibilité que des fonctions non membres const puissent modifier l'objet, ce qui est interdit pour les objets const.

Analyse des problèmes

Dans le code fourni , les objets de l'ensemble sont stockés sous la forme const StudentT. Lors de l'accès aux fonctions membres getId() et getName() dans la boucle, le compilateur détecte ce problème car les objets sont const et les fonctions membres ne sont pas marquées comme const.

Solution

Pour résoudre l'erreur, les fonctions getId() et getName() doivent être créées const:

int getId() const {
    return id;
}

string getName() const {
    return name;
}

Cela permet aux fonctions d'être appelées sur des objets const sans violer les règles const.

Notes supplémentaires

  • De même, l'opérateur
inline bool operator
  • Il est préférable de transmettre des références (au lieu d'objets) aux fonctions membres pour des raisons de performances et d'exactitude du code.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3