Я пытаюсь сделать то, что я действительно не делал раньше. У меня в основном есть 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()»: абстрактно».
Есть ли способ реализовать класс A, используя класс B через множественное наследование в классе C?
Редактировать: Желание сохранить класс B бетоном.
Что, кажется, проблема с наличием 'B' реализовать методы напрямую? –
@MarkB Я хочу, чтобы B был многоразовым. Класс A содержит метод, реализованный в классе C. –
Если вы действительно хотите это сделать, вы можете реализовать фиктивный метод для B. Единственная причина, по которой я говорю, «если вы действительно этого хотите», - это потому, что у нее нет очень хороший «запах кода». Возможно, вы можете объяснить немного больше о реальной проблеме, которую вы пытаетесь решить, и кто-то здесь может дать вам альтернативную реализацию. – DubiousPusher