|
3 / 3 / 2
Регистрация: 04.07.2015
Сообщений: 187
|
|
Использование объектов класса в другом классе25.10.2016, 21:27. Показов 10971. Ответов 19
Метки нет (Все метки)
Пусть имеются 2 класса Snake и Food, а также 2 их объекта snake и food соответственно. food должен в одном из его методов работать со snake, а именно с координатами всех его точек. Вопрос, как в методе food работать с классом Snake, если объекты которого не передавать в качестве аргументов?
0
|
|
| 25.10.2016, 21:27 | |
|
Ответы с готовыми решениями:
19
Использование класса в другом классе Классы (Использование функций класса в другом классе) Использование данных одного класса в другом классе |
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||
| 25.10.2016, 21:36 | ||||
|
1. передача этого знания с помощью аргументов функций 2. объект может быть глобальным. и тогда к нему можно будет получить доступ из любой точки программы.
0
|
||||
|
Модератор
13772 / 10965 / 6491
Регистрация: 18.12.2011
Сообщений: 29,242
|
||||||
| 25.10.2016, 21:36 | ||||||
|
А включения не достаточно?
0
|
||||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
| 25.10.2016, 21:37 | |
|
1
|
|
|
56 / 56 / 31
Регистрация: 24.10.2016
Сообщений: 186
|
|
| 25.10.2016, 21:40 | |
|
Я думаю правильным подходом будет сделать класс Snake синглтоном (объект один же в программе я так понял)
И далее в Food использовать Snake::getInstance()
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||
| 25.10.2016, 21:44 | |||
|
ничто не мешает сделать 2-3 змеи, и тд. здесь нет причин для сингелтона. или все таки это змея кушает еду?
1
|
|||
|
56 / 56 / 31
Регистрация: 24.10.2016
Сообщений: 186
|
|||
| 25.10.2016, 22:02 | |||
|
0
|
|||
|
3 / 3 / 2
Регистрация: 04.07.2015
Сообщений: 187
|
|
| 25.10.2016, 22:15 [ТС] | |
|
Простите, а что такое синглтон и как его сделать?
0
|
|
|
Комп_Оратор)
|
|||
| 25.10.2016, 23:07 | |||
|
Вполне может быть, что пища - активный объект действа. Например, она может перевариваясь и покидая змею с противоположного конца, придавать последней импульс. Еда сама знает свою калорийность, количество и ей от змеи нужна только протяженность и сечение проточной части. И змее не нужно знать, о том, что она там съела, даже. Что бы не расстраиваться. Особенно, учитывая современные пищевые технологии. То есть, еда рассчитав импульс передаёт его змее, змея рассчитывает звуковые эффекты, количество частиц, волновые процессы по туловищу. Скорость центра масс позволяет рассчитать его координату. А если змеек две, то ясно, что им не стоит встречаться на скамейке под луной. На сытый желудок.
0
|
|||
| 25.10.2016, 23:23 | |
|
0
|
|
|
56 / 56 / 31
Регистрация: 24.10.2016
Сообщений: 186
|
|||||||
| 25.10.2016, 23:29 | |||||||
0
|
|||||||
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
||
| 25.10.2016, 23:39 | ||
|
0
|
||
|
3 / 3 / 2
Регистрация: 04.07.2015
Сообщений: 187
|
||
| 26.10.2016, 02:30 [ТС] | ||
|
0
|
||
|
Комп_Оратор)
|
||
| 26.10.2016, 08:45 | ||
|
Sinkha, еда, действительно может включать змею. Всё зависит от решаемой задачи. Расскажите как взаимодействуют объекты, нарисуйте схему, чтобы было понятно о чём речь. Это и Вам будет не вредно. Легче будет понять и задачу и советы. А советы легче будет изложить. Потому что общение на данный предмет будет идти в терминах состояний/(значений свойств) и поведения/(работы методов), где важно взаимодействие объектов двух классов.
1
|
||
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
|
| 26.10.2016, 08:46 | |
|
0
|
|
|
Форумчанин
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
||||||
| 26.10.2016, 09:24 | ||||||
0
|
||||||
|
3 / 3 / 2
Регистрация: 04.07.2015
Сообщений: 187
|
||
| 27.10.2016, 16:01 [ТС] | ||
|
ЗЫ Использую библиотеку OpenGL, хотя наверное это не важно, так как тут проблема с классами
0
|
||
|
Комп_Оратор)
|
||
| 27.10.2016, 17:50 | ||
|
Сразу, по ходу, хочу спросить. Я заглянул в хедер змеи и удивился. Зачем там хедер Тооls? Для объявления указателей достаточно предваряющего объявления class CurrentPosition;а CurrentPosition getHeadCP(); и CurrentPosition getTailCP(int a); могли бы указатели возвращать. А инклудить хедер можно в cpp-щник змеи если он там нужен. Тогда легче, не получая двойных объявлений, связывать разные модули. Потому, что так и с другими классами можно поступить. Tools например тоже можно познакомить со змеёй (предварительно объявив) и включив её в Cpp. Профит: они смогуь работать друг с другом не мешая. ![]() Если змея одна Вы можете объявить экземпляр в хедере. Хоть за фигурной скобкой класса. Если хотите поковыряться одним классом в другом, - объявите дружбу. Хотя я бы так не делал, если этого можно избежать. Имхо, объясните на примере 2-х -3-х простых классов, что не получается.
0
|
||
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
|||
| 27.10.2016, 18:13 | |||
|
0
|
|||
|
3 / 3 / 2
Регистрация: 04.07.2015
Сообщений: 187
|
||
| 29.10.2016, 14:03 [ТС] | ||
|
Игра называется "Змейка". Создаётся змейка, которая имеет размер, по умолчанию он равен 3. Начальный координаты статичны. Также в случайной области создаётся еда, координаты которой всегда случайны. Задача в том, что когда голова змеи совпадает с координатами еды, змея съедает еду и размер змеи увеличивается на 1. После этого задаются случайные координаты новой еды и так далее. ПРоигрыш происходит когда змея съедает саму себя(свой хвост) или змея заходит за область игры(за карту). Еда не может появится там, где сейчас змея, то есть в момент появления координаты еды не могут быть равными координате любой части змеи. Вроде все. В общем игра повторяет ту самую snake на телефонах.
Добавлено через 22 часа 20 минут +++ Добавлено через 21 час 3 минуты
0
|
||
| 29.10.2016, 14:03 | |
|
Помогаю со студенческими работами здесь
20
Массив объектов класса в другом классе (композиция). Компилятор ругается на конструктор Как объявить массив объектов одного класса в другом классе, а затем поместить в него объекты? Объект класса в другом классе Создание класса в другом классе Массив элементов класса в другом классе Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога
Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
|
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога
Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|