Classe abstraite et opérateur
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:
Code:
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;
} |
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).
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 :D