crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Двоякий класс
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Litkevich Yuriy Дата 19.9.2018, 14:22
  а-а-а, допёр!
:)
Litkevich Yuriy Дата 19.9.2018, 13:36
 
Цитата(Алексей1153 @ 18.9.2018, 11:13) *
"кирпичики", из которых любой потомок можно собрать
не понял.
Алексей1153 Дата 18.9.2018, 9:13
 
Цитата(Litkevich Yuriy @ 18.9.2018, 8:17) *
А 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)

У класса Умный есть методы:
Раскрывающийся текст
добавитьЦветные(список<Цветной> цветные);
установитьКруглый(Круглый круглый);



Иногда требуется ещё один класс, который в программе ведёт себя двояко, то как Круглый, то как Цветной.
Выходил из положения так (на примере Умного):
Раскрывающийся текст
добавитьЦветные(список<Цветной> цветные);
добавитьЦветные(список<Двоякий> цветные); // перегруженный метод
установитьКруглый(Круглый круглый);
установитьКруглый(Двоякий круглый); // перегруженный метод


Как бы так извернутся, чтобы получить Двоякий класс, который можно было бы применять и вместо Цветного и вместо Круглого, не создавая перегруженных версий функций у класса Умный?
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 28.3.2024, 17:47