Qu'est-ce qu'une classe de base virtuelle en C++ et pourquoi est-elle nécessaire en héritage multiple ?
Bonjour à tous ! J'ai récemment commencé à apprendre le C++ et j'ai rencontré un problème avec l'héritage multiple. J'ai une classe de base `Animal`, dont héritent `Bird` et `Mammal`. Ensuite, je veux créer une classe `Bat` qui hérite à la fois de `Bird` et `Mammal`. Mais le compilateur génère une erreur d'ambiguïté lorsque j'essaie d'appeler la méthode `speak()`, définie dans `Animal`. Voici un exemple de code :
```cpp
class Animal {
public:
void speak() { cout << "Animal sound\n"; }
};
class Bird : public Animal {};
class Mammal : public Animal {};
class Bat : public Bird, Mammal {};
```
Lorsque j'essaie de créer un objet `Bat` et d'appeler `bat.speak()`, j'obtiens une erreur. J'ai entendu parler de `virtual` pour les classes de base, mais je ne comprends pas comment cela fonctionne ni quelle est la différence. Expliquez-moi, s'il vous plaît, ce qu'est...