bonjour, j'ai le problème suivant:
Soit 2 classes Matrice et Vector dérivant des boost ublas matrix et vector.
Pour permettre de comparer des objets Matrice et Vecteur entre eux mais également avec des constantes (une sorte d'element-wise operator), j'ai déclaré les operateurs suivant:
Pour les Vecteurs:
Pour les Matrices:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Vector operator > (const Vector& roV); Vector operator < (const Vector& roV); Vector operator >= (const Vector& roV); Vector operator <= (const Vector& roV); friend Vector operator > (const Vector& roV, const double& roVal); friend Vector operator < (const Vector& roV, const double& roVal); friend Vector operator >= (const Vector& roV, const double& roVal); friend Vector operator <= (const Vector& roV, const double& roVal);
Il y a les opérateur 'member' des classes et les opérateurs 'friend' pour permettre de coder indifféremment: 1.5 > Vecteur ou Vecteur > 1.5
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Matrix operator > (const Matrix& roM); Matrix operator < (const Matrix& roM); friend Matrix operator > (const Matrix& roM, const double& roVal); friend Matrix operator > (const double& roVal, const Matrix& roM); friend Matrix operator < (const Matrix& roM, const double& roVal); friend Matrix operator < (const double& roVal, const Matrix& roM); friend Matrix operator >= (const Matrix& roM, const double& roVal); friend Matrix operator >= (const double& roVal, const Matrix& roM); friend Matrix operator <= (const Matrix& roM, const double& roVal); friend Matrix operator <= (const double& roVal, const Matrix& roM);
Mais sous VS'2008, à la compilation de:
je reçois l'erreur suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Vector V1; (V1>0) ;
Je ne vois pas comment le compilateur aboutit à ça.... à ma connaissance il n'y a pas d'operateur de conversion implicite de 'int' en Vector ou Matrix.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 error C2666: 'Vector::operator >' : 3 overloads have similar conversions could be 'Vector CMatlabVector::operator >(const Vector &)' or 'Matrix operator >(const Matrix &,const double &)' or 'Vector operator >(const Vector &,const double &)' [found using argument-dependent lookup] while trying to match the argument list '(Vector, int)'
Est-ce que vous auriez une idée ?
Merci d'avance.
Alex.
Partager