Подкласс очень легко). Если вы предпочитаете, чтобы все ваши публичные методы были виртуальными - это нормально. Мне это не нравится, но я не скажу вам, как писать код. Только не передавайте личные привычки другим людям, как если бы они были фактами ...
аюсь выяснить интересную проблему множественного наследования.
Дедушка - это интерфейсный класс с несколькими методами:
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;
}
Может кто-нибудь помочь мне понять проблему и как лучше использовать частичные реализации?