Название: [РЕШЕНО] Виртуальное наследование для разрешения наследования ромбовидного Отправлено: Yegor от Март 13, 2018, 19:52 Всем здравствуйте!
У меня есть диалог - потомок QDialog И есть класс-примесь, который также наследуется для этого диалога. И примесь мне обязательно нужна наследником от QObject. Если оба этих класса наследовать в мой диалог - то возникает ситуация с ромбовидным наследованием. Примесь: Код
Диалог: Код
Где проблема - в классе QObject, который есть во всех наследуемых классах. Я знаю, что для решения такой проблемы, в стандарте С++ предусмотрена технология виртуального наследования. Пожалуйста, подскажите, какой код добавить для использовании этой технологии. Спасибо! Название: Re: Виртуальное наследование для разрешения наследования ромбовидного Отправлено: ViTech от Март 13, 2018, 20:20 Я знаю, что для решения такой проблемы, в стандарте С++ предусмотрена технология виртуального наследования. Пожалуйста, подскажите, какой код добавить для использовании этой технологии. Никакой. Чтобы вы смогли задействовать механизм виртуального наследования, нужно чтобы в иерархии QDialog было виртуальное наследование от QObject ( QDialog : public QWidget : public virtual QObject). Но это не так, и никто такое виртуальное наследование делать не будет. Так что придётся вам что-то другое придумать :). Название: Re: Виртуальное наследование для разрешения наследования ромбовидного Отправлено: Авварон от Март 13, 2018, 21:50 Еще MOC не умеет в множественное наследование от QObject.
Можно посмотреть на AggregationSystem в QtCreator, там что-то подобное - есть связанные объекты, которые можно "кастить" друг в друга. Название: Re: Виртуальное наследование для разрешения наследования ромбовидного Отправлено: ssoft от Март 14, 2018, 08:07 Можете сделать абстрактный интерфейс и использовать агрегацию
Код
Название: Re: Виртуальное наследование для разрешения наследования ромбовидного Отправлено: Yegor от Март 14, 2018, 11:15 Понятно. Спасибо за информацию!
Название: Re: [РЕШЕНО] Виртуальное наследование для разрешения наследования ромбовидного Отправлено: Igors от Март 15, 2018, 16:25 И примесь мне обязательно нужна наследником от QObject. Простой вариант - примесь хранит указатель на QObject - гораздо лучше |