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)
Jusqu'ici tout fonctionne correctement et j'arrive bien à ecrire
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);
Ensuite je fais une classe qui descend de base
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 base b1,b2,res ... res = b1 * b2
Et là ca ne compile plus, quand j'écris :
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); }
Le compilateur me dit : "Impossible de trouver une correspondance pour fille::operator=(base)"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 fille f1,f2,res ... res = f1 * f2
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.
Partager