[Langage] Surdefinition des operateurs dans c++
Bonjour
Un polynôme est représenté par un tableau de ses coefficients. Le coefficient du monôme de degré i est rangé dans l’élément de rang i du tableau des coefficients.
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
| class Polynome{
friend Ostream& operator<<(ostream&, const Polynome&);
friend istream& operator>>(istream&, Polynome&);
private:
int taille;
double* coefficients;
public:
Polynome();
Polynome(int);
Polynome(Polynome&);
~Polynome() ;
void set_taille(int) ;
void set_coefficients(double* ) ;
int get_taille( ) ;
double* get_coefficients( );
int degre();
double coefAt(int) ;
Polynome operator+( const Polynome& );
Polynome operator*(const Polynome& p);
Polynome operator*(double);
bool operator==( const Polynome& );
const Polynome& operator=(const Polynome&);
Polynome operator+=(const Polynome& );
Polynome operator*=(const Polynome& );
double calculValPolynome(double);
}; |
on est arrivé a la surdefinition de l'operateur +, voici le code:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| Polynome Polynome:: operator+( const Polynome& p){
Polynome pp;
if(this->taille>=p.taille)
pp.taille=this->taille;
else
pp.taille=p.taille;
int i=0;
while(i<pp.taille){
pp.cf[i]=coefAt(i)+p.coefAt(i);
i++;
} return pp;
} |
mais il donne une erreur:
error C2662: 'coefAt' : cannot convert 'this' pointer from 'const class Polynome' to 'class Polynome &'Conversion loses qualifiers
NB:la méthode coefAt(int i) retourne la valeur du coefficient de rang i.