crossplatform.ru

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


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

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

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


Последние 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 Рейтинг@Mail.ru Текстовая версия Сейчас: 12.7.2025, 7:23