Bonjour

J'ai un problème avec un overloading.

Dans un fichier matrix.cpp j'ai la ligne suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
d=d+(isEven(i)*mat.values[i][0]*det(subMat));
d est de type Complex.
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 :
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)'
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 ...

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 :
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);
}
Mais j'ai toujours la même erreur!

Sauriez-vous d'où ça provient ?

Merci

Nas'