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é.