Bonjour,
Je cherche à créer une classe abstraite pour me servir d'interface, toutes les méthodes sont virtuelles pures. Plusieurs classes hériteront de cette interface.
Seulement j'ai un soucis avec les opérateurs.
Exemple de code:
J'ai l'erreur C2259 'B' impossible d'instancier une classe abstraite à cause du membre: A operator=(const A&) = 0: est abstrait (1 fois en ligne 10 et 2 fois en ligne 18).
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 class A { public: virtual A& operator=(const A&) = 0; }; class B: A { public: B& operator=(const B&) { return (*this); } }; int main() { B b1, b2; b2 = b1; return 0; }
Mon opérateur de la classe B ne se substitue pas à celui de la classe A, qui, puisqu'il est abstrait, n'est pas défini, d'où l'erreur de compilation.
Mais pourquoi il ne se substitue pas, et comment y parvenir ?
J'imagine que ce doit être une erreur pas bien compliquée mais depuis ce matin j'ai le nez dedans et je focalise peut être un peu trop pour trouver la solution à mon pb
Merci pour votre aide.
IDE: VS2019 community v16.7.4.
[EDIT] Correction d'une erreur de typo, oublié deux & dans l'exemple de code![]()
Partager