|
9 / 7 / 2
Регистрация: 02.12.2021
Сообщений: 49
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ООП реализация меню с классом его пунктов. Вызов функций посредством метода класса пункта меню12.04.2022, 19:26. Показов 1238. Ответов 4
Проходим ООП. В задании, предшествовавшем этому, необходимо было скопировать пример преподавателя классов Пункта меню и Меню. Дальше будет много кода, извиняюсь за это. Вот как они выглядят:
Пункт меню cpp: Кликните здесь для просмотра всего текста
Само меню cpp: Кликните здесь для просмотра всего текста
И вот так выглядит main для демонстрации работы полученных классов: Кликните здесь для просмотра всего текста
Функции f1, squaring и f3 это просто заглушки для демонстрации. Что здесь важно: вызов этих функции реализован с помощью метода run() класса MenuItem. С ним в дальнейшем и будет проблема. В настоящем задании, необходимо было написать абстрактный класс User и производные от него классы Employee и Client Вот они: User: Кликните здесь для просмотра всего текста
Employee: Кликните здесь для просмотра всего текста
Employee cpp
Client: Кликните здесь для просмотра всего текста
Client cpp:
А теперь, самое главное. По заданию необходимо реализовать тестовую логику классов в файле main, чтобы оценить работоспособность приложени и добавить эту функциональность в меню, в т.ч. необходимо реализовать пункты добавления в память клиентов и работников. Вот здесь и начинаются проблемы, я не понимаю, как это реализовать так, чтобы можно было привязать к функции run() класса MenuItem. В последний раз я пробовал менять typedef функцию, менял возвращаемые значения и принимаемые аргументы. К сожалению, этот код утрачен, но я в любом случае думаю, что это неправильный подход. Я совершенно потерялся в решении. Наверняка же должен быть какой-то способ не создавать кучу функций для отдельного заполнения массива/вектора необходимыми объектами (Отдельно Employee и Client). Вот например в коде есть строчка virtual void addUser(User& person) = 0;, я добавил её туда после того как где-то прочитал, что таким образом можно затем переопределить эту функцию в каждом классе для заполнения массива объектами соответствующего типа. Верно ли это? В любом случае после этого мысль не идёт, я во всём запутался и не понимаю, в каком направлении двигаться дальше.Во-первых, где хранить? В динамическом массиве через указатель или с помощью вектора? Важно ли это вообще в данной ситуации? Во-вторых, как правильно (или хотя бы ближе всего к "правильному") реализовать нужные функции? Можно ли создать нужный метод в классе-родителе в данной ситуации? В поисках решения наткнулся на понятие "интерфейс", но и здесь я спотыкаюсь. Интерфейс же состоит только из виртуальных функции? Тогда нужно ли создавать сначала интерфейс, затем от него наследовать User и уже потом наследников Client и Employee? Однако это для меня не снимет вопрос технической реализации. В-третьих, как изменятся функции в классе MenuItem? Будет куча перегрузок? Или получится подвязать всё под существующий метод, который возвращает метод bool? Для последнего варианта вообще не вижу возможностей. Прошу помощи в том, чтобы с этим разобраться. Просто я даже не могу понять, может среди найденной мной информации есть правильная, но мне не хватает знаний и навыков, чтобы их увидеть.
0
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 12.04.2022, 19:26 | |
|
Ответы с готовыми решениями:
4
Выделение главного пункта меню и его дочерных пунктов-элементов
Отключить быстрый вызов пунктов меню |
|
2393 / 1914 / 763
Регистрация: 27.07.2012
Сообщений: 5,559
|
|||||||
| 12.04.2022, 21:40 | |||||||
Сообщение было отмечено Eltan как решение
Решение
1
|
|||||||
|
9 / 7 / 2
Регистрация: 02.12.2021
Сообщений: 49
|
|
| 12.04.2022, 22:08 [ТС] | |
|
Спасибо за ответ!
К сожалению, по заданию реализация должна быть такая. Но чисто теоретически, как может пункт меню быть реализован в ООП? Можете направить на какие-то примеры реализации?
0
|
|
|
2393 / 1914 / 763
Регистрация: 27.07.2012
Сообщений: 5,559
|
||
| 12.04.2022, 22:35 | ||
std::function<>. Тогда можно передавать и простые указатели на функции, и функциональные объекты, и лямбды.
0
|
||
|
9 / 7 / 2
Регистрация: 02.12.2021
Сообщений: 49
|
|
| 14.04.2022, 10:42 [ТС] | |
|
Спасибо, почитаю об этом!
0
|
|
| 14.04.2022, 10:42 | |
|
Помогаю со студенческими работами здесь
5
Реализация каждого отдельного пункта меню с условием Построение графиков функций посредством меню Вызов метода производного класса (ООП, наследование, списки инициализации) MainMenu: поменять цвет и ширину полосы меню и пунктов меню Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
|
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога
Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip"
Извлеките архив и вы увидите. . .
|
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога
Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д.
Сборка примера
Скачайте. . .
|