Я пытаюсь выяснить интересную проблему множественного наследования.
Дедушка - это интерфейсный класс с несколькими методами:
class A
{
public:
virtual int foo() = 0;
virtual int bar() = 0;
};
Затем существуют абстрактные классы, которые частично завершают этоinterface.
class B : public A
{
public:
int foo() { return 0;}
};
class C : public A
{
public:
int bar() { return 1;}
};
Класс, который я хочу использовать, наследует от обоих родителей и указывает, какой метод должен откуда исходить с помощью директив:
class D : public B, public C
{
public:
using B::foo;
using C::bar;
};
Когда я пытаюсь создать экземплярЯ получаю ошибки за попытку создания экземпляра абстрактного класса.
int main()
{
D d; //<-- Error cannot instantiate abstract class.
int test = d.foo();
int test2 = d.bar();
return 0;
}
Может ли кто-нибудь помочь мне понять проблему и как наилучшим образом использовать частичные реализации?