Bonjour à tous,

Je reviens solliciter vos lumières car j'ai une petite question (j'apprends sur le tas et parfois, les livres et les forums ne suffisent pas...).

Pour décrire mon problème :
J'ai une classe (appelons là c1) qui contient une méthode qui prend des arguments par référence.
J'ai une seconde classe (appelons là c2) qui contient une surcharge de l'opérateur * (pour me permettre de faire une produit matrice*vecteur)

Je passe donc une instance de c2 à la méthode de c1 par référence. Dans cette méthode de c1 j'appelle l'opérateur * (surcharge dans c2) mais je me fait jeter par le compilateur qui me sort "no match operator * in..."
Je sais que c'est un peut tordu et que j'oublie certainement quelque chose d'important mais je n'arrive pas à savoir ce que c'est.

j'ai donc quelque chose qui ressemble à celà pour ma méthode de c1 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
void c1::setMatrix(c2& aC2)
{
<div style="margin-left:40px">vector<double> testVector;
//... je remplie ce vecteur
 
vector<double> bufferVector = aC2*testVector; //ceci me sort une erreur lors de la compilation
vector<double> bufferVector2 = c2(aC2)*testVector; //ceci fonctionne mais ce n'est pas ce que je veux faire</div>
}
à savoir que la surcharge fonctionne très bien lorsque je l'utilise directement sur l'instance de ma classe (comme mis en commentaire au dessus)

voici ce à quoi ressemble mon overload de * dans c2 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
vector<double> operator*(const vector<double>& aVector)
{
<div style="margin-left:40px">vector<double> toBeReturned;
//... je fais mon mic-mac
return toBeReturned;</div>
}
Je ne sais pas si tout ceci est bien clair, mais je suis preneur d'explications et d'une solution pour pouvoir utiliser mon passage par référence et ma surcharge.

Merci d'avance,

betaplus