Реализуйте абстрактные методы из унаследованного класса

Я пытаюсь сделать то, чего раньше не делал. У меня в основном 3 класса. Класс A — это абстрактный класс с чисто виртуальными методами, класс B — это отдельный класс, который содержит методы с тем же именем, что и виртуальные методы в классе A. Я пытаюсь связать все вместе в классе C. Я хотел бы наследовать классы B и A в C (множественное наследование) и использовать методы из класса B для реализации методов класса A. Таким образом, я создаю модульный подход. Пример ниже — очень упрощенная версия моего кода.

class A {
virtual int methodA() = 0;
virtual int methodB() = 0;
virtual int methodC() = 0;
};

class B { //B implements A.A() and A.B()
int methodA() { return 0; };
int methodB() { return 0; };
};

class C : A, B {
int methodC() { return 0; }; //C implements A.C()
};

Я могу скомпилировать класс C, но когда я пытаюсь построить класс C new C() Я получаю сообщение компилятора, говорящее «не может создать экземпляр абстрактного класса из-за следующих членов: int methodA () ‘: is abstract».

Есть ли способ реализовать класс A с использованием класса B через множественное наследование в классе C?

Редактировать: Желание сохранить бетон класса В.

1

Решение

Вы можете сделать это с помощью какого-то методического примера.

class A {
public:
virtual int methodA() = 0;
virtual int methodB() = 0;
virtual int methodC() = 0;
};

class B { //B implements A.A() and A.B()
public:
int methodA() { return 0; };
int methodB() { return 0; };
};

class C : public A, public B {
public:
int methodA() { return B::methodA(); }
int methodB() { return B::methodB(); }
int methodC() { return 0; }; //C implements A.C()
};

Демо-версия: http://ideone.com/XDKDW9

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]