|
0 / 0 / 0
Регистрация: 06.09.2017
Сообщений: 114
|
|
SFML. Вектора, массивы, классы, объекты01.11.2017, 21:59. Показов 6888. Ответов 67
Доброго времени суток форумчане!
Возникла проблема с векторами. но понимаю как работают эти самые векторы. Задача такова, есть абстрактный класс Object с какими-то функциями(это не столь важно). Так же есть дочерние классы такие как Circle и Circle2. В главной функции создаются новые объекты дочерних классов и заносятся в массив. НО когда хочу сделать через вектор то выдаёт ошибку: "error: 'vector' does not name a type". так же по мере решения это проблемы будет ещё несколько вопросов таких как: "Как реализовать уничтожение объектов Массива/Вектора", "Как сделать универсальную функцию определения координат курсора в окне"
0
|
|
| 01.11.2017, 21:59 | |
|
Ответы с готовыми решениями:
67
Не отрисовываются объекты openGL3.0 в SFML Из первых четырех строк массива сформировать четыре новых вектора (одномерные массивы). Для каждого вектора найти сумму Классы и объекты |
|
0 / 0 / 0
Регистрация: 06.09.2017
Сообщений: 114
|
||||||
| 01.11.2017, 23:44 [ТС] | ||||||
|
Вот вам на рассмотрения файл Main.cpp
так как Update постоянно проходит по всему массиву, то при проходе ячейки где БЫЛ когда-то объект выдаёт ошибку
0
|
||||||
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 01.11.2017, 23:44 | |
|
Зачем массив с одним элементом?
0
|
|
|
0 / 0 / 0
Регистрация: 06.09.2017
Сообщений: 114
|
|
| 01.11.2017, 23:45 [ТС] | |
|
ну не знаю, но то что там всего один объект не мешает добавлять свыше него новые элементы, не совсем понял почему так происходит...
0
|
|
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 01.11.2017, 23:46 | |
|
Если у тебя вектор, то ты удаляешь сам объект, а затем элемент из вектора. Размер уменьшается и цикл туда не попадёт.
Но ради одного элемента нет смысла использовать массивы.
0
|
|
|
0 / 0 / 0
Регистрация: 06.09.2017
Сообщений: 114
|
|
| 01.11.2017, 23:49 [ТС] | |
|
собственно вот и все объекты которые есть на экране (заполненные круги) их как видно более 1-го но это не мешает массиву
0
|
|
|
0 / 0 / 0
Регистрация: 06.09.2017
Сообщений: 114
|
|
| 01.11.2017, 23:51 [ТС] | |
|
не знаю почему но массив как-то сам расширяется когда создаю новый объект (Лазурный и Зелёный круг)
0
|
|
|
0 / 0 / 0
Регистрация: 06.09.2017
Сообщений: 114
|
|
| 01.11.2017, 23:53 [ТС] | |
|
вот, ещё как демонстрация
0
|
|
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 01.11.2017, 23:54 | |
|
Ты выходишь за пределы массива.
0
|
|
|
0 / 0 / 0
Регистрация: 06.09.2017
Сообщений: 114
|
|
| 01.11.2017, 23:55 [ТС] | |
|
и все объекты обновляются нормально, то есть движутся по экрану как и прописано в их классах
Добавлено через 27 секунд Ну это понятно, но разве не должно быть ошибки?
0
|
|
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 01.11.2017, 23:57 | |
|
Гарантированно и с первого раза - нет. Но программа неправильная.
0
|
|
|
0 / 0 / 0
Регистрация: 06.09.2017
Сообщений: 114
|
|
| 02.11.2017, 00:03 [ТС] | |
|
Согласен что это косяк, но просто были проблемы с векторами
Добавлено через 1 минуту Как теперь добавлять в вектор новый объект Circle/Circle2 и прочие дочерние объекты? Добавлено через 3 минуты и как более корректно сделать удаление объекта? У меня была идея такая: в то время как функция Update проходит по вектору, то она бы отправляла объекту номер ячейки этого объекта в векторе, так сказать свой ID. В свою очередь объект который был потревожен функцией проверял бы условие уничтожения, удалял своё место в векторе, а затем и сам себя. Ну или есть более простой и корректный способ?
0
|
|
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|||||||
| 02.11.2017, 09:36 | |||||||
|
Что за удаление самого себя? Идёшь по вектору в цикле - сразу и удаляй.
0
|
|||||||
|
0 / 0 / 0
Регистрация: 06.09.2017
Сообщений: 114
|
|
| 02.11.2017, 12:49 [ТС] | |
|
Условие на удаление находится внутри объекта и если это условие выполняется то объект должен удалиться.
В проекте есть объекты Круг и круг2 если внутри радиуса этого объекта есть курсор то объект удаляется иначе ничего не делается. И это условие находится внутри объекта круг и круг2
0
|
|
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 02.11.2017, 13:24 | |
|
У тебя какая-то запутанная реализация. Как он удаляет сам себя? Кто delete делает?
Сделай, например, чтобы условие можно было проверить извне, функцию какую-то, и дальше по результату.
0
|
|
|
|
|
| 02.11.2017, 14:43 | |
|
SkeiTax, короче, так никто не пишет. Никакие объекты сами себя удалять не должны, потому что объекты никак не могут знать, кто ими пользуется, каким образом они созданы (через new, malloc, или автоматически как переменная в программе), сколько указателей на них в каких местах программы сохранено и используются и.т.д.
Возможно, исключением из этой ситуации являются самописные смартпойнтеры, но не о них речь.
0
|
|
|
0 / 0 / 0
Регистрация: 06.09.2017
Сообщений: 114
|
|
| 02.11.2017, 17:39 [ТС] | |
|
Эх... Собственно к чему все это я узнаю, я узнаю это для того, что бы потом мне было проще реализовывать те или иные объекты. Я хочу сделать подобие игры какой-нибудь. Представим есть объект который может стрелять, то есть этот объект должен создавать другие объекты, объекты пуль который в свою очередь должны уничтожаться при выполнении того или иного условия. Например пуля столкнулась с объектом препятствием а значит она должна удалиться.
Добавлено через 5 минут Вообще всё это делаю не из головы, есть программа GM(Game Maker), так там есть простая функция для удаления объекта(экземпляра): instance_destroy() допустим ты создаёшь в этой программе объект пуля, в игре срабатывает условие в этом объекте которое запускает ту функцию и в результате объект удаляется.
0
|
|
|
|
||||||
| 02.11.2017, 19:00 | ||||||
0
|
||||||
|
0 / 0 / 0
Регистрация: 06.09.2017
Сообщений: 114
|
|
| 02.11.2017, 19:03 [ТС] | |
|
Можете пояснить?
0
|
|
|
|
|
| 02.11.2017, 19:15 | |
|
А чего пояснять? Класс это сущность которая должна управлять только своим состоянием. Любой класс, в том числе круг знает лишь своё состояние, но не состояние своих хозяев, контейнеров, векторов.. Если другой большой какой-то класс или функция или даже функция мейн просто хранит вектор объектов этого круга, то она и должна добавлять|удалять элементы в этот вектор. Сам круг никак не должен знать, кто его хранит, это в не его уровня абстракции. Но зато он может проверять условие своего удаления!
Но опять таки проверять это условие лишь тогда и только тогда, когда его об этом хозяин спрашивает. 1. Хозяин попросил условие у круга 2. Круг ответил таки да 3. Хозяин попросил у вектора убить круг 4. Круг сдох, даже не зная, что всю жизнь прожил в векторе
0
|
|
| 02.11.2017, 19:23 | |
|
Не по теме: Вот и я о том же.
0
|
|
| 02.11.2017, 19:23 | |
|
объекты и классы Классы, объекты Классы и объекты КЛАССЫ И ОБЪЕКТЫ Классы и объекты Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
|