Bonjour
J'ai un problème avec un overloading.
Dans un fichier matrix.cpp j'ai la ligne suivante :
d est de type Complex.
Code : Sélectionner tout - Visualiser dans une fenêtre à part d=d+(isEven(i)*mat.values[i][0]*det(subMat));
isEven(i) retourne 1 ou -1 mais caster en double donc ça retourne un double en fait.
values[i][0] est de type Complex
det(subMat) est une méthode (récursive) qui retourne un Complex
Le problème, c'est qu'à la compilation, j'ai l'erreur suivante :
Je ne vois pas pourquoi il me propose un overloading avec un type Matrix sachant que ça n'intervient pas dans cette ligne. Mais peut-être est-ce parce que cette ligne se trouve dans un Matrix.cpp ...binary '*' : no operator found which takes a right-hand operand of type 'Complex' (or there is no acceptable conversion)
1> could be 'Matrix operator *(Complex,Matrix &)'
1> while trying to match the argument list '(int, Complex)'
Bref, j'ai donc voulu overloader l'opérateur de multiplication pour qu'il comprenne l'opération : double * Complex (Complex * Complex étant déjà overloadé et marche).
J'ai fait donc dans le fichier Complex.cpp ceci :
Mais j'ai toujours la même erreur!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Complex Complex::operator*(const double nb) { return Complex(getRePart()*nb, getImPart()*nb); }
Sauriez-vous d'où ça provient ?
Merci
Nas'
Partager