|
0 / 0 / 0
Регистрация: 29.04.2009
Сообщений: 3
|
|
Запутался в классах ((29.04.2009, 03:58. Показов 1098. Ответов 4
Метки нет (Все метки)
1) Есть класс лабиринта "Maze". В нем расположен 2-ух мерный массив. Он генерируется процедурой в классе.
2) Есть класс мыши "Mouse". В этом классе должны распологаться процедуры нахожнения минимального пути из точки А лабиринта в точку Б. Лабиринт генерируется по "методу сечений". Мышь будет искать путь по "волновому алгоритму". Проблема в том что массив находиться в классе лабиринта и класс мыши этот массив не знает. Как правильнее передать данные массива из одного класса в другой? Просто передать указатель на массив и его размеры мыши или нет??? Подскажите пожалуйста как правильнее это оформить. Запутался потому что вариантов напрашивается много и все какието плоские.. Опыта в этом деле не хватает а где взять опыт как не с практики? Был вариант распологать массив в main.cpp но показался неверным т.к. класс лабиринта на то он и класс чтобы хранить данные о полноценном лабиринте. Еще вариант.. поиск пути (волновой алгоритм) разместить в классе лабиринта но тогда класс мыши должен знать указатель на класс созданного лабиринта. И при этом функция поиска пути должна возвращать классу мыши массив пути (массив последовательных шагов мыши по лабиринту). Насколько мне известно, в данном случае прийдется в функцию передать пустой указатель (неразмеченный массив пути), но ведь если я массив создам в сторонней функции а потом передам назад указатель на него ЭТО НЕ ЕСТЬ ХОРОШО?? Ведь вродебы массив при выходе из функции удалиться или я не прав??
0
|
|
| 29.04.2009, 03:58 | |
|
Ответы с готовыми решениями:
4
Запутался в классах и инкапсуляции
|
|
Заблокирован
|
|
| 29.04.2009, 04:59 | |
|
Зачем тебе вообще класс мыши нужен?
0
|
|
|
2343 / 499 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
|
|
| 29.04.2009, 05:44 | |
|
каковы задачи классов?
какие данные хранит класс mouse?
0
|
|
|
98 / 54 / 3
Регистрация: 18.03.2009
Сообщений: 273
|
||
| 29.04.2009, 09:30 | ||
|
Но такой подход, как ты заметил, "не есть хорошо", так как нарушается один из принципов объектно-ориентированного программирования, а именно, инкапсуляция. Можно сделать что-то в таком духе: в классе лабиринта реализовать функцию, которая будет выдавать информацию о том месте, где стоит мышь, а именно: в функцию передаются координаты мыши, а возвращается 4 значения (можно реализовать посредством передачи в функцию ссылок, либо посредством битовых операций, устанавливая соответствующие биты в возвращаемом значении), например: в клетке справа - стенка, слева - проход, спереди - стенка, сзади - проход (то есть мышь может сделать шаг либо налево, либо назад). Таким образом мышь сможет получать инфу о лабиринте, не имея доступа к непосредственно массиву.
0
|
||
|
0 / 0 / 0
Регистрация: 29.04.2009
Сообщений: 3
|
|||||||||
| 29.04.2009, 18:24 [ТС] | |||||||||
|
Путь должен искать сам лабиринт а мышь должна здесь быть только графическим классом. Добавлено через 1 минуту 49 секунд
Прошу прощение за отсутствие коментариев, прокоментирован тока cpp модуль а хеадер пока руки не доходили. Добавлено через 12 минут 20 секунд Насколько я понимаю, тк. у меня класс лабиринта был динамически создан из главного модуля программы, то чтобы из модуля мыши получить в него доступ (чтобы обращаться к его функциям) нужно знать указатель на созданный класс лабиринта, верно? Просто както некрасиво чтоли звучит что один модуль не на прямую а через переданный из главной программы обращается к другому модулю. Может их как нибудь по другому "подружить" можно? Хотя наверное подругому дружить лишино смысла.. ведь я не просто должен обращаться к пустому модулю, а к созданному, что размещается в памяти и имеет указатель на его начало в памяти а значит и указатель нужно знать.. Подскажите у кого какие соображенияч пожалуйста.
0
|
|||||||||
| 29.04.2009, 18:24 | |
|
Помогаю со студенческими работами здесь
5
Определить, какие из этих имен встречаются во всех классах, какие есть хотя бы в двух классах, и какие - только в одном классе
IF ELSE-запутался Я запутался:) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|