Я пытаюсь сделать то, чего раньше не делал. У меня в основном 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?
Редактировать: Желание сохранить бетон класса В.
Вы можете сделать это с помощью какого-то методического примера.
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
Других решений пока нет …