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 c++ : Sélectionner tout - Visualiser dans une fenêtre à part
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;