|
225 / 39 / 4
Регистрация: 18.11.2012
Сообщений: 1,633
|
||||||
FLTK, Страуструп, неоднозначность задачи!10.07.2018, 21:15. Показов 2451. Ответов 25
Метки нет (Все метки)
Привет, народ! Хочу попросить помощи в таком вопросе, есть следующая задача:
Кликните здесь для просмотра всего текста
Определите класс Controller, содержащий четыре виртуальные функции: on () , off () , set_level (int) и show() . Породите из класса Controller как минимум два класса. Один из них должен быть простым тестовым классом, в котором функция show () выводит на печать информацию о том, включен или выключен контроллер, а также его текущий уровень. Второй производный класс должен управлять цветом линий объекта класса Shape; точный смысл понятия "уровень" определите сами. Попробуйте найти третий объект для управления с помощью класса Controller.
Не совсем улавливаю смысл этого задания, особенно последнее предложение Попробуйте найти третий объект для управления с помощью класса Controller. что за объект и как его найти я ума не приложу. Возможно, есть те, кто сталкивался ранее с этой задачей или те, кто свежим взглядом увидит то, чего я не вижу, и объяснят смыл сего опуса. На данные момент смог написать следующее, набросок, если так можно выразиться: Кликните здесь для просмотра всего текста
Спасибо, заранее!
0
|
||||||
| 10.07.2018, 21:15 | |
|
Ответы с готовыми решениями:
25
Страуструп FLTK newline в Out_box Бьерн Страуструп. Инсталляция библиотеки FLTK
|
|
Комп_Оратор)
|
|||||||
| 25.07.2018, 11:56 | |||||||
|
Liss29, Вы правы. Я никогда не видел упоминаний о таких "абстрактных" базовых классах. И в Вашем задании не видно требований такой реализации. Я пока не увидел применения того "абстрактного" что закрывает конструктор, кроме как для запрета наследования для клиентского кода:
Но в Вашем случае, это не требуется.
0
|
|||||||
|
225 / 39 / 4
Регистрация: 18.11.2012
Сообщений: 1,633
|
||||||||
| 25.07.2018, 21:51 [ТС] | ||||||||
|
Кликните здесь для просмотра всего текста
А вот о чисто виртуальных функциях он упоминает вскользь, как впрочем и дружественных функциях-классах, хотя, справедливости ради, нужно сказать, что он отсылает к книге Страуструпа "Язык программирования С++", но это что касается дружественных функций-классов.
0
|
||||||||
|
41 / 41 / 11
Регистрация: 02.04.2016
Сообщений: 313
|
||
| 25.07.2018, 22:36 | ||
|
Я немного вмешаюсь в вашу дискуссию. Люблю абстрактные мысли и идеи
![]() Другом объявлен только первый класс и только первый класс может унаследоваться, запустив этот приватный конструктор, ибо он друг. Второй - не друг - не может запустить приватный конструктор базы - не видит его. Читая этот топик, невольно вспомнил лекции матана. Слооожно, но понять можно. Но я могу и попроще объяснить: делай свой проект. Принимай решения. Думай о том, что твой проект будут использовать другие. Код и все эти ограничения - это всего лишь повод указать другим разработчикам как надо использовать и как не надо использовать твой код. Никогда этого не говорил, но, ИМХО, за день создания кода своего проекта я понял больше, чем за неделю чтения синтаксических особенностей std::thread. Ошибки компилятора, библиотеки, активное гугление - это не сравнится с синтетическими заданиями даже самого Страуструпа. Книги я читаю только тогда, когда понимаю слёту что там написано. Тогда, когда уже уверен в том как это работает и почему следует писать так. Книга для меня - всего лишь подтверждение уже найденного мной, моей позиции. Например, сейчас я пишу свою "небольшую" змейку: https://github.com/Lyosha12/Snake-SFML Здесь можно увидеть поле std::unique_ptr<Filler> filler = nullptr;Filler - это класс-заполнитель клетки (Cell), которыми управляет бассейн клеток (CellsPool). Заполнитель, как сказано в описании, всего лишь оболочка для бонуса. А бонус уже - это виртуальный интерфейс, предоставляющий функцию "активации" бонуса, когда змейка его возьмёт. Это сложная архитектура и я не один день её переделывал. Однако это позволяет мне создать гибкость, которую я запланировал. Это было небольшое введение. А теперь по поводу того, нужно ли сосуществовать виртуальной функции и данным, которые она использует. Бонус может действовать несколько ходов змейки. Поэтому не только при создании, но и после бонусу (абстракции) требуется доступ к змейке, которая его уже хранит и обслуживает у себя. И для этого я храню не константную ссылку на змейку. Я привёл этот пример не потому, что хотел ещё раз повторить сказанное. Но потому, чтобы показать важность "реальной" разработки приложения. Такого приложения, которое ориентируется на мир, а не на абстрактные задания из книги, которые иногда и не понять как интерпретировать. И только поэтому я сейчас уже не читаю книгу сперва, а потом уже в код погружаюсь. Нет. Сначала - код, после чего уже становится ясно о чём пишет автор, чего он хочет и чего, может, не хочет. Есть интересные задачки на подумать. Есть задачки на скорость мышления. Но задачки на синтаксис, на синтетические упражнения с тем, что может язык, я считаю, надо проводить самостоятельно. Интересно что-то - попробуй запрограммировать. Получи ошибки, загугли, поспрашивай на форуме, а уж потом, если ещё нет уверенности в понятом, обращайся к книге. Конечно, есть такие книги, которые лучше сначала прочитать от и до, чтобы понимать какими инструментами можно выстраивать проект. Например, это "Шаблоны игрового проектирования" Р. Найстрома. Ну и эпилог моего монолога, скажем так. Проблема возникла из-за неоднозначности. А любая неоднозначность должна быть разрешена до сдачи проекта. Если сдавать некому - покажи что ты знаешь, что ты умеешь. Хотя бы сам себе, потом уже форуму. Предложи разные подходы и спроси мнения знающих людей. Программирование, как много где написано, - больше практика. И долго с этим я был не согласен. Но, для себя уже прояснил: неделя чтения проигрывает дне кодинга.
0
|
||
|
Комп_Оратор)
|
|||||
| 26.07.2018, 14:35 | |||||
|
Добавлено через 15 минут ![]() Впрочем, никто не запрещает хранить данные в абстрактном классе. Я говорил лишь о том, что чисто виртуальному методу они не нужны.
0
|
|||||
|
225 / 39 / 4
Регистрация: 18.11.2012
Сообщений: 1,633
|
||||||||||
| 27.07.2018, 06:00 [ТС] | ||||||||||
.Добавлено через 1 час 21 минуту Не по теме:
Кликните здесь для просмотра всего текста
0
|
||||||||||
|
Комп_Оратор)
|
|||
| 27.07.2018, 13:02 | |||
|
Не по теме:
Добавлено через 4 часа 28 минут Liss29, я помню, что где-то в The Design and Evolution of C++ Страуструп говорит о том, что был приятно удивлён когда ему подсказали возможность сокрытия конструктора. Может я путаю. Но не вспомню, в каком контексте шла речь. О синглтонах ли или о других классах создаваемых фабричными методами. Не могу уже найти. Но я нашёл цитату о том, почему не ввдено специального ключевого слова вроде "abstract". Из неё можно предположить, что он и сам предпочитает думать об абстрактном классе, как о классе с чисто виртуальным методом. А тот, что мы разбирали (пытались разобрать), - возможность создать то что в шарпе называется sealed. То есть, если не использовать друзей, то наследование невозможно не в открытом ни в закрытом варианте. И это прямая противоположность абстрактному классу, как интерфейсу, - классу прямо предназначенному для открытого наследования. Вот сама цитата: http://www.stroustrup.com/hopl2.pdf Bjarne's History of C++: 1979−1 991, Page on stroustrup.com
То есть, можно создавать и кастрированные абстрактные классы, но тут БС не говорит о них.
0
|
|||
| 27.07.2018, 13:02 | |
|
Непонятная неоднозначность. Виртуальная неоднозначность Неоднозначность декларации Неоднозначность методов Неоднозначность с делегатами Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Химера правил, администрации порталов, законы и беззаконие.
Hrethgir 26.06.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11904&stc=1&d=1782459438
У меня сейчас так везде по форуму - не могу создавать сообщений, но запись по случаю этому. . .
|
сукцессия 5
anaschu 26.06.2026
ПЛАН РАЗРАБОТКИ математической модели сукцессии микоризных систем
Переход AM → EcM (Endo + ErM) · Шумилов А. С. · ИФХиБПП РАН · Пущино · 2026
. . .
|
сукцессия 4
anaschu 25.06.2026
Более детализированный план разработки
План доработки модели динамики микоризных симбиозов (EcM с гистерезисом)
Цель: Реализовать логику переключения между эрикоидным (ErM) и эктомикоризным. . .
|
сукцессия 3
anaschu 25.06.2026
Примерный план работ по модели
|
|
сукцессия 2
anaschu 25.06.2026
параметризировочная калибровочная таблица будущей модели
|
Многофункциональное здание: как одно здание порождает конфликты требований, которые никто не планировал (мат мет мод 29)
anaschu 23.06.2026
Многофункциональное здание:
как одно здание порождает конфликты требований,
которые никто не планировал
Материалы для обсуждения с МГСУ · 2026
Рисунки внутри приложенного ворд файла.
Что за. . .
|
28. Конкретное развертывание плана номер 1 из поста номер 27
anaschu 22.06.2026
Можно ли из модели получить конкретные строительные требования?
Честно — напрямую из текущей модели такие ответы не получить. Но цепочка логики есть, и она не такая длинная.
Где разрыв
. . .
|
27. Планы на разработку функциональных требований к строительству внутри модели пищеблока (или не только его?)
anaschu 22.06.2026
Что уже реализовано и даёт конфликты «бесплатно»
Самый простой конфликт уже работает — конфликт за ресурс-работника. Заданий больше, чем доступных поваров → очередь в queue1. Это прямое отражение. . .
|