Conversion implicite et surcharge d'opérateur
Hello,
Ce qui suit est un bout de code épuré (de beaucoup de choses) concernant une librairie de calcul matriciel.
L'idée est de construire des expressions sous forme d'arbre, grâce à l'application d'une succession d'opérateurs et fonctions, puis de résoudre le calcul grâce à la conversion implicite.
Je pensais cela possible, j'ai quelques doutes face à certaines difficultés.
Ici, apparemment, ce qui m'embête est que le C++ n'accepte qu'une seule conversion implicite définie par l'utilisateur à la fois.
Le code qui suit instancie des matrices (mat), et je m'attendais à ce que ces mat soient converties implicitement en ExprMat, qui sont un type dérivé de Expr. Seulement, le compilateur cherche à convertir mat directement en Expr.
Des idées ?
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| class mat;
class Expr;
class ExprMat : public Expr{
ExprMat(mat& x);
}
class ExprAdd : public Expr{
ExprAdd(Expr* left, Expr* right);
operator mat();
}
template<class L, class R>
ExprAdd operator+(L& left, R& right){
return ExprAdd(&left, &right);
}
// stuff
mat a,b;
mat c = a+b; |