Se connecter avec
S'enregistrer | Connectez-vous

[C++] Problème avec méthode operator+

Dernière réponse : dans Programmation

Voila j'explique brièvement le contexte j'ai fait 2 classes sur le principe des listes chainées c'est à dire une classe Liste qui contient des Maillons (donc classe Maillon).

Et j'aimerais définir un operator+ pour ajouter un maillon à une liste, donc la méthode se présente comme ca :

  1. Liste& Liste :: operator+ (const Maillon& m){
  2. Maillon *m2 = new Maillon(m);
  3. m2->setSuivant(NULL);// le nveau maillon étant ajouté a la fin de la liste on fait pointer sont suivant vers Null.
  4. if(premier){ // si il y'a un maillon dans la liste (donc un premier maillon)
  5. dernier->setSuivant(m2); //on fait pointer l'ancien dernier maillon vers m2 car il est dernier à présent.
  6. dernier = m2; // c'est maintenant m2 qui est dernier maillon
  7. }
  8. else{
  9. dernier = premier = m2; //cas particulier ou liste vide
  10. }
  11. return *this;}


Et dans le main je fait un truc du style :

  1. Liste *l1 = new Liste();
  2. l1 + m1; //l'erreur est ici qd on appelle ma méthode operator+


Le probleme quand je compile j'obtient l'erreur suivante et je ne comprend pas trop pourquoi :

invalid operands of types `Liste*' and `Maillon*' to binary `operator+'

Merci de votre aide ! :hello: 

Autres pages sur : probleme methode operator

Lassé par la pub ? Créez un compte
Expert Programmation

Salut,

Revois le type de tes arguments. Tu veux passer des pointeurs (*). Or la fonction attend comme des arguments par référence (&). Il faut donc revoir le prototype de ton opérateur et/ou déférencer tes opérateurs.

enjoy!

Merci de m'avoir répondu mais je suis plutot novice en C++ et je ne vois donc pas comment faire, et je ne sais pas ce que c'est que déférencer tes opérateurs,

si tu pouvais me corriger ce que je dois changer ca m'aiderait grandement merci :) 

PS : au fait maillon je le crée de cette facon:

  1. Maillon *m1 = new Maillon(un_T1);


il y'a un maillon vers le suivant dedans et un objet T tout bête.
Lassé par la pub ? Créez un compte