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 :
à 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)
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> }
voici ce à quoi ressemble mon overload de * dans c2 :
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.
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> }
Merci d'avance,
betaplus
Partager