Могу ли я это сделать?
class A {
public:
virtual void aFoo() = 0;
};
class B : virtual public A {
public:
virtual void aFoo() { ... }
};
class D : public A {};
class C : public B, virtual public D {};
Проблема связана с реализацией aFoo()
в B
и отсутствием его в C
. Когда дело доходит до компиляции, я вижу эту ошибку:
error: no unique final overrider for ‘virtual void A::aFoo()’ in ‘C’
Разве нельзя переопределить чистый виртуальный метод виртуального базового класса в B
?
Только что отредактировал пример для соответствия фактическому варианту использования. Теперь, глядя на это упрощенно, я не совсем уверен, возможно ли это вообще, не говоря уже о хорошем дизайне.