Здравствуйте, гость ( Вход | Регистрация )
Litkevich Yuriy | Дата 19.9.2018, 14:22 |
а-а-а, допёр! |
|
Litkevich Yuriy | Дата 19.9.2018, 13:36 |
"кирпичики", из которых любой потомок можно собрать не понял. |
|
Алексей1153 | Дата 18.9.2018, 9:13 |
А MOC не поддерживает и правильно делает! Я и так не люблю множественное наследование, с ним проблем можно огрести. Поэтому и предлагаю использовать "кирпичики", из которых любой потомок можно собрать, а сигналы в каждом потомке нужно разрулить вручную между кирпичиками |
|
Litkevich Yuriy | Дата 18.9.2018, 6:17 |
кроме 3-го пункта, Умный сам по себе. Для абстрактной задачи общий предок сам по себе напрашивается, т.е. т.н. ромбовидное наследование: База -> Круглый База -> Цветной Круглый + Цветной -> Универсальный тогда Универсальный можно пихать в Умного и под видом круглого и под видом Цветного но может есть какой-нибудь шаблон (типовое решение) с иным подходом. Т.к. очень хочется использовать сигналы и слоты Qt для Круглого и Цветного или хотябы базового класса. А MOC не поддерживает множественное наследование от двух QObject-ов. |
|
Алексей1153 | Дата 15.9.2018, 11:30 |
Litkevich Yuriy, я так понимаю, возможные свойства класса - потомка следующие: 1) Круглый 2) Цветной 3) Умный 4) Круглый и Цветной. у них у всех четырёх должен быть общий предок. А потомки будут вести себя согласно заданным свойствам. |
|
Iron Bug | Дата 14.9.2018, 17:47 |
ты лучше на примере кода покажи. на этих (особенно русскоязычных) примерах вообще непонятно, чего ты хочешь. | |
Litkevich Yuriy | Дата 14.9.2018, 7:50 |
Несколько раз, при написании программ, возникала проблема со структурой классов. Допустим есть 3 класса: Круглый, Цветной, Умный, при этом Круглый и Цветной имеют общий базовый класс, в общем случае может быть как прямой так и через несколько классов (например, QObject) У класса Умный есть методы: Раскрывающийся текст добавитьЦветные(список<Цветной> цветные); установитьКруглый(Круглый круглый); Иногда требуется ещё один класс, который в программе ведёт себя двояко, то как Круглый, то как Цветной. Выходил из положения так (на примере Умного): Раскрывающийся текст добавитьЦветные(список<Цветной> цветные); добавитьЦветные(список<Двоякий> цветные); // перегруженный метод установитьКруглый(Круглый круглый); установитьКруглый(Двоякий круглый); // перегруженный метод Как бы так извернутся, чтобы получить Двоякий класс, который можно было бы применять и вместо Цветного и вместо Круглого, не создавая перегруженных версий функций у класса Умный? |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 23.4.2024, 10:06 |