Surcharge de l'opérateur +=
Bonjour,
J'ai créé une classe Polynome dans laquelle j'ai surchargé les opérateurs + et * pour me permettre d'additionner et multiplier 2 polynômes entre eux. J'essaye également du surchargé l'opérateur += et *+ mais je rencontre des problèmes.
Polynome.cpp:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
polynome operator+= (polynome P, polynome Q)
{
float * coeff;
int degre = max(P.degre,Q.degre);
coeff=new float [degre+1];
for (int i=0;i<degre+1;i++)
{
if (i<= min(P.degre,Q.degre))
{
coeff[i]=P.coeff[i]+Q.coeff[i];
//std::cout << coeff[i] << std::endl;
}
else
{
if (P.degre<Q.degre)
{
coeff[i]=Q.coeff[i];
}
else
{
coeff[i]=P.coeff[i];
}
}
}
polynome Result(degre,coeff); // fait appel à un constructeur créant un polynome à partir des paramètres Int et *Flaot
delete[] coeff;
return Result;
} |
Polynome.h:
Code:
1 2
|
friend polynome operator+=(polynome,polynome); |
main.cpp:
Code:
1 2 3 4 5
|
cout << "(P+=Q)(2.1)= " << (P+=Q).Eval(2.1) << "\n" << endl; // partie 1
P+=Q; // partie 2
cout << P.Eval(2.1) << endl; |
Ce que je ne comprends pas c'est pourquoi j'obtiens le bon résultat avec la partie 1 du main.cpp et pas avec la partie 2. Le P.Eval qui est une méthode de classe pour évaluer le polynome en une valeur ne me donne pas la même valeur que celle de la partie 1...
Quelques peut-il m'aider?
Je débute en POO et la gymnastique mentale est loin d'être simple.
Merci d'avance
Neodole