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éthodeest bien appelée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part const Operande* Reel::addition(const Operande* op) const
Mais le problème, c'est que, lorsque on est dans cette méthode => il y a une récursivité inattendue
En effet, lerappelle cette même méthode donc Seg fault.
Code : Sélectionner tout - Visualiser dans une fenêtre à part return op->addition(this);
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 !
Partager