problème surcharge opérateur

problème surcharge opérateur - C++ - Programmation

Marsh Posté le 20-02-2009 à 12:58:45    

Bonjour tout le monde. Je suis perdu. Je comprends rien au surcharge d'opérateur. J'ai une structure:

Code :
  1. struct Polynome
  2. {
  3. int degree;
  4. int* coef;
  5. }


 
 
et je dois surcharger les opérateurs =,==...
bref pour le = j'ai fait

Code :
  1. Polynome & operator = (const Polynome &p)
  2. {
  3. if(&t!=this)
  4. {
  5. degree=p.degree;
  6. coef=p.coef;
  7. }
  8. return * this;
  9. }


Voila ça compile mais comment savoir si ça marche vraiment?Je dois mettre quoi dans le main pour tester?
 
Puis pour le ==

Code :
  1. bool operator== (const Polynome &p1,const Polynome &p2)
  2. {
  3. if (p1.degree==p2.degree && p1.coef==p2.coef)
  4. return true;
  5. else
  6. return false;
  7. }


Or le compilateur me dit que le == ne prend qu'un seul paramètre.Pourtant dans mes autres exos il y en a deux. Puis je dois aussi avoir une erreur avec le p1.coeff==p2.coeff, je sais pas comment faire avec le int* coeff.
Si quelqu'un pouvait un pauvre newbie comme moi je le en serais très reconnaissant.Merci pour votre aide.
 
Mario63


Message édité par mario63 le 20-02-2009 à 12:59:51
Reply

Marsh Posté le 20-02-2009 à 12:58:45   

Reply

Marsh Posté le 20-02-2009 à 13:12:20    

Reply

Marsh Posté le 20-02-2009 à 13:50:37    

Merci pour ta réponse rapide Elmoricq mais ça ne m'aide pas beaucoup. J'ai beau avoir lu tout le lien que tu m'as passés je comprends toujours pas comment régler mon problème.

Reply

Marsh Posté le 20-02-2009 à 13:55:24    

les operateurs binaires sont en general des fonctions libres et non des methodes. Si c'est une methode, elle a un parametere implicite (this) et ne prend donc qu'un parametre.
Ton code est aussi faux : pas de forme cannoqiue de coplien, tu comapres des poineturs et non les contenu,etc.
utilise std::vector, std::transform et std::copy plutto que tes poitneurs foireux.

 

Quel ecole/fac que je la rajoute à ma liste noire ?


Message édité par Joel F le 20-02-2009 à 14:02:18
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed