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:
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);
Pour les Matrices:
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);
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

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
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)'
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.

Est-ce que vous auriez une idée ?
Merci d'avance.
Alex.