Следующий код взят из MSDN , я скопировал код здесь, чтобы не делать свой собственный пример, в основном у меня возникла эта проблема в моем проекте.
struct V {
virtual void vf();
};
struct A : virtual V {
void vf() override;
};
struct B : virtual V {
void vf() override;
};
struct D : A, B {
// Uncomment the following line to resolve.
// void vf() override;
};
Я взялпосмотрите на этот SO Вопрос , где предлагается использовать директиву using
для разрешения неоднозначного символа.
Это предложение не работает для этого примера, вместо этого для решения проблемы мы должны явнопереопределить базовые методы в производном классе.
Я бы хотел избежать явного переопределения в производном классе, поэтому возникает вопрос: почему это не может быть разрешено с помощью директивы using
, как предложено в ссылке SO выше, вместо переопределения? например:
struct D : A, B {
using A::vf(); // not going to work
};
Причина, по которой следует избегать явного переопределения, заключается в использовании кода метода в одном из базовых классов.