Bonjour,

J'ai une classe dans laquelle je surcharge l'operateur = en interne et l'opérateur * en externe (car je ne veux pas modifier le premier membre)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
class base
{
public:
   base();
   base(const base &inst);
   base &operator=(const base &inst);
}
base operator* (base &inst1, base &inst2);
Jusqu'ici tout fonctionne correctement et j'arrive bien à ecrire
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
base b1,b2,res
...
res = b1 * b2
Ensuite je fais une classe qui descend de base
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
class fille : public base
{
public
   fille();
   fille(int a, int b);
   fille(const fille &inst);
}
Et là ca ne compile plus, quand j'écris :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
fille f1,f2,res
...
res = f1 * f2
Le compilateur me dit : "Impossible de trouver une correspondance pour fille::operator=(base)"

Faut-il redéfinir l'opérateur pour toutes les classes filles (et dans ce cas avec quelle syntaxe pour apperler celui de base) ?

Une deuxième question est : est-il nécessaire de redéfinir le constructeur par défaut et le constructeur de copie dans la classe fille si ceux-ci ne font rien de plus que ceux de la classe base (a priori non) ?

Merci pour votre aide.