Подкласс очень легко). Если вы предпочитаете, чтобы все ваши публичные методы были виртуальными - это нормально. Мне это не нравится, но я не скажу вам, как писать код. Только не передавайте личные привычки другим людям, как если бы они были фактами ...

аюсь выяснить интересную проблему множественного наследования.

Дедушка - это интерфейсный класс с несколькими методами:

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

Затем существуют абстрактные классы, которые частично дополняют этот интерфейс.

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;
};

Когда я пытаюсь создать экземпляр D, я получаю ошибки за попытку создания абстрактного класса.

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

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

    return 0;
}

Может кто-нибудь помочь мне понять проблему и как лучше использовать частичные реализации?

Ответы на вопрос(2)

Ваш ответ на вопрос