У меня есть общий интерфейс, который наследуют многие классы в моем проекте (FWIW - это интерфейс пересчета).Этот интерфейс наследуется как классами, так и другими интерфейсами.Вместо того, чтобы повторно реализовывать интерфейс в каждом классе, я хотел бы просто иметь соответствующий класс реализации, который наследуют все другие классы.Проблема в том, что его разметка приводит к смерти ».
struct IBar {
virtual VOID Bar() = 0;
};
struct CBar : IBar { // implementation class for IBar
VOID Bar() { }
};
struct IFooBar : IBar {
virtual VOID Foo() = 0;
};
struct CFooBar : IFooBar, CBar { // implementation of IFooBar interface
VOID Foo() { }
// Bar() should be implemented by the inheritance of CBar
};
Если я пытаюсь скомпилировать, я получаю следующую ошибку:
error C2259: 'CFooBar' : cannot instantiate abstract class
1> due to following members:
1> 'void IBar::Bar(void)' : is abstract
IПонимаю, что я могу это исправить, реализовав CFooBar::Bar() { return CBar::Bar(); }
или получив IFooBar
наследование от CBar
, но я подозреваю, что есть менее хакерский способ решения этой проблемы.Любые предложения будут с благодарностью.