Herança Múltipla em C ++ - por que você não trabalh

stou tentando descobrir uma questão interessante de herança múltipl

O avô é uma classe de interface com vários métodos:

class A
{
public:
    virtual int foo() = 0;
    virtual int bar() = 0;
};

Então, existem classes abstratas que estão concluindo parcialmente essa interfac

class B : public A
{
public:
    int foo() { return 0;}
};

class C : public A
{
public:
    int bar() { return 1;}
};

A classe que eu quero usar herda de ambos os pais e especifica qual método deve vir de onde, usando diretivas:

class D : public B, public C
{
public:
    using B::foo;
    using C::bar;
};

Quando tento instanciar um D, obtenho erros ao tentar instanciar uma classe abstrat

int main()
{
    D d; //<-- Error cannot instantiate abstract class.

    int test = d.foo();
    int test2 = d.bar();

    return 0;
}

lguém pode me ajudar a entender o problema e a melhor forma de fazer uso de implementações parciai

questionAnswers(2)

yourAnswerToTheQuestion