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 : 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;
}
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