J'ai une classe simple, destiné à convertir des entiers en articles d'octets.
mc_int& mc_int::operator=(const mc_int& other) {
val = other.value();
// |-------->Error: No instance of overloaded function matches the argument list and object (object has type quelifiers that prevent the match)
}
3 Réponses :
Votre fonction membre Quand il est indiqué que "l'objet a des qualificateurs de type bla bla", cela signifie qu'un objet a trop de En outre, puisque vous avez posté un résumé d'une erreur, je suppose que vous utilisez Visual Studio. Visual Studio montre des résumés d'erreurs dans la fenêtre "Erreur". Allez à Affichage-> Sortie Pour voir les erreurs complètes dans leurs détails terribles, qui auraient dû vous dire quelle variable était le problème et qu'elle ne pouvait pas appeler cette fonction à cause de son valeur () code> n'est pas une fonction const code>, ce qui signifie qu'il a le droit de modifier les membres et ne peut pas être appelé sur const < / code> objets. Puisque je suppose que vous vouliez dire que cela ne doit être lu que, changez-le à Int Value () const; code>. Ensuite, vous pouvez l'appeler sur const code> de code> MC_INT code>, et il garantit que vous ne modifiez pas accidentellement aucun membre. P>
const code> ou volatile code> qualificatifs pour accéder à une fonction. p>
const code> ness. < / p>
Essayez de changer: à: p>
dans cet opérateur Ceci dit que cette fonction ne modifiera pas l'état de l'objet et peut donc être appelé sur les objets surchargé = code>, autre code> est une référence const code>. Vous ne pouvez appeler que des fonctions membres marquées const code> sur cet objet. Depuis la valeur VALUE () CODE> Retourne, renvoie Val code> et ne modifie pas l'objet, il doit être marqué comme const code>: const code>. p> p>
Oh, je ne pense pas que je ne découvrirais jamais cela, merci d'avoir expliqué.