Есть базовый класс First содержащий 1 абсолютно виртуальную функцию
virtual QString getInfo() =0;
2 Производных класса Basic, Vip, причем
class Basic : virtual public First
class Vip : public Basic, public OtherClass (совершенно другой класс, не относится к этой иерархии)
И есть класс SuperVip, который и является причиной проблемы
class SuperVip : public Vip, public Basic
когда я пытаюсь сделать следующее
SuperVip* svip = dynamic_cast<SuperVip*>(tmpBasic) //некий указатель на Basic
QString result = svip->Basic::getInfo();
Получаю
Basic is an ambiguous base of SuperVip
Указывающий на строку с result
Я понимаю, что это из-за того, что SuperVip наследует Basic и Vip в свою очередь тоже наследует Basic, вот и получается неопределенность.
Мне нужно ее решить не применяя виртуальное наследование, подскажите пожалуйста, как явно указать компилятору, какой метод использовать и избежать неопределенности?