Dites que nous avons une classe héritant de deux classes de base (héritage multiple). Base class A
est abstrait, déclarant une fonction virtuelle pure foo
, l'autre base class B
déclare et implémente une fonction foo
de la même signature."importer" une définition d'une fonction d'une classe de base pour implémenter une interface abstraite (héritage multiple en C++)
struct A
{
virtual void foo(int i) = 0;
};
struct B
{
virtual void foo(int i) {}
};
struct C : public A, public B {};
Je veux utiliser la mise en œuvre de foo
de la base class B
dans mon dérivé class C
. Cependant, si je n'implémente pas la fonction foo
une seconde fois dans mon class C
dérivé, je ne peux en instancier aucun objet (il reste abstrait). L'héritage virtuel n'aide pas ici comme prévu (class A
et class B
n'ont aucune classe de base commune).
Je me demande s'il existe un moyen d '«importer» l'implémentation de foo
de class B
dans class C
afin de ne pas avoir à répéter le même code.
L'exemple ci-dessus est bien entendu artificiel. La raison pour laquelle je veux implémenter foo
dans class B
est que je veux dériver class D : public B
et utiliser l'implémentation de class B
de foo
. Je sais que l'héritage n'est pas (principalement) destiné à la réutilisation du code, mais j'aimerais quand même l'utiliser de cette façon.
qui sonne comme une option viable au moins, merci! – kynan