C ++ Herencia múltiple: ¿por qué no trabaja?
stoy tratando de resolver un interesante problema de herencia múltiple.
El abuelo es una clase de interfaz con múltiples métodos:
class A
{
public:
virtual int foo() = 0;
virtual int bar() = 0;
};
Entonces hay clases abstractas que están completando parcialmente esta interfaz.
class B : public A
{
public:
int foo() { return 0;}
};
class C : public A
{
public:
int bar() { return 1;}
};
La clase que quiero usar hereda de los dos padres y especifica de qué método debería venir y usando directivas:
class D : public B, public C
{
public:
using B::foo;
using C::bar;
};
Cuando intento crear una instancia de D, obtengo errores al intentar crear una instancia de una clase abstracta.
int main()
{
D d; //<-- Error cannot instantiate abstract class.
int test = d.foo();
int test2 = d.bar();
return 0;
}
Puede alguien ayudarme a comprender el problema y cómo utilizar mejor las implementaciones parciales?