Voilà les classes :

Code : 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
21
22
23
24
25
26
27
28
29
30
31
//-----------------------------------------------------
//-------Operande.h (classe mère abstraite)
//------------------------------------------------------
// Méthode virtuelle pure (pas implémentée) pour appeler la bonne méthode addition dans une des classes filles.
virtual const Operande* addition(const Operande* op) const = 0 ;
 
//-----------------------------------------------------
//-------Reel.h (classe fille)
//------------------------------------------------------
 
  virtual const Operande* addition(const Operande* op) const;
  virtual const Operande* addition(const Reel* op) const;
  virtual const Operande* addition(const Complexe* op) const;
  virtual const Operande* addition(const Matrice* op) const;
 
//-----------------------------------------------------
//-------Reel.cpp
//------------------------------------------------------
 
const Operande* Reel::addition(const Operande* op) const
{
    cout << "Je rebalance sur l'inconnu pour connaître le type" << endl;
    return op->addition(this);
}
 
 
const Operande* Reel::addition(const Reel* op) const
{
    cout << "Addition REEL + REEL" << endl;
    return (new Reel(m_valeur + op->value()));
}
------------------------------------------------------------------------
Quand on appelle la méthode addition sur une opérande => La résolution de type se fait bien puisque
la méthode
Code : Sélectionner tout - Visualiser dans une fenêtre à part
const Operande* Reel::addition(const Operande* op) const
est bien appelée.
Mais le problème, c'est que, lorsque on est dans cette méthode => il y a une récursivité inattendue
En effet, le
Code : Sélectionner tout - Visualiser dans une fenêtre à part
return op->addition(this);
rappelle cette même méthode donc Seg fault.
Moi je voudrais appeler évidemment
Code : Sélectionner tout - Visualiser dans une fenêtre à part
 const Operande* Reel::addition(const Reel* op) const
.

Avez vous une idée svp là je sèche !