Прежде всего, я прошу прощения, если есть еще один пост, который отвечает на это, все похожие посты, которые я нашел, имели дело со схемами наследования алмазов или определенными функциями, которых это не делает.
Короче, яИнтересно, возможно ли, чтобы один класс наследовал от двух других классов, где у обоих дочерних классов есть функция с тем же именем и аргументами, но она определена в одном дочернем классе и чисто виртуальная в другом.Кроме того, если бы я мог сделать это, вызовет ли функция в чисто виртуальном / абстрактном классе вызовет определенную функцию в другом дочернем классе с минимальными изменениями в производном классе?
Пример:
class A
{
public:
virtual void Set(int X) = 0;
};
class B
{
public:
virtual void Set(int X);
};
class AB : public A, public B
{
//other methods not relevant to example go here
};
int main(int argc, char **argv)
{
int Y = 5;
A* ObjectA = new AB();
ObjectA->Set(Y);
return 0;
}
До сих пор мои попытки скомпилировать этот базовый пример были встречены с ошибками, которые говорят:
'AB': невозможно создать экземпляр абстрактного класса из-за следующих членов: 'void A :: Set(int) ': is abstract
Когда я проводил собственное исследование, я не мог найти четкого ответа, но, основываясь на других вопросах, связанных со смежными темами, я обнаружил, что используя «using B ::»Набор "в классе AB может помочь с этим.Но когда я пытаюсь добавить его в определение класса AB, ошибка не устраняется.
Можно ли как-нибудь это сделать?