Член указатель09.07.2024, 23:01. Показов 3967. Ответов 52
Метки нет (Все метки)
Добрый день
Очень простая конструкция
Как лучше? Слышал такое 1) "Лучше иметь m_data членом, а не указателем". Это владение, а оно не всегда нужно/допустимо. В большинстве случаев SomeObject просто использует SomeData для чтения/записи, но SomeData остается вполне самостоятельным объектом что может существовать и без SomeObject 2) "Необходимо использовать вумный указатель! Вообще "голые" указатели (как в примере выше) - это зло, их быть вообще не должно!" А Вы что предложите? Спасибо
0
|
||||||
| 09.07.2024, 23:01 | |
|
Ответы с готовыми решениями:
52
Функция-член принимает указатель на функцию-член
Указатель на функцию-член |
| 13.07.2024, 19:25 [ТС] | |||||
Удаляется элемент/объект сцены, обеспечить undo обязан. Да, факт/действие установки ссылки конечно был, но
0
|
|||||
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
||||
| 13.07.2024, 19:48 | ||||
|
Я вижу только две причины - комплексное редактирование и снижение зтарат памяти (например, снижение траффика данных на gpu). Ответьте на пару вопросов: 1) кто владеет "параметрами"? (очевидно владение разделяемое, т.е. подсчет ссылок актуален) 2) что происходит при редактировании "параметров" и через что они редактируются? (очевидно они меняются для всех владельцев, если нужно независимо, то редактор должен предоставлять возможность сделать ресурс уникальным, т.е. редактируется ресурс, а не владелец) 3) зачем одному объекту знать, кто и сколько еще используют тот же ресурс? (я не вижу в этом смысла, т.е. даже количество ссылок самому объекту знать не нужно) На всякий случай напомню, что undo - это отмена последнего действия, т.е. удалить Light1 через undo не затрагивая Light2 нельзя, грубо говоря, отменяться будут все действия, выполненные после создания Light1.
0
|
||||
| 13.07.2024, 22:32 [ТС] | |||
|
Если такой пример не нравится - можно другой. Хотя бы скины. Полигонный объект управляется бонами, но никакими другими отношениями/владениями они не связаны. И опять-таки нельзя просто так, безболезненно удалить бону.
0
|
|||
|
фрилансер
6496 / 5727 / 1133
Регистрация: 11.10.2019
Сообщений: 15,292
|
||
| 13.07.2024, 22:37 | ||
|
0
|
||
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
|||||
| 13.07.2024, 22:40 | |||||
|
Вот я и спрашиваю, к чему вы упоминаете undo и с чем у вас там проблемы?
0
|
|||||
|
Модератор
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,898
|
|
| 14.07.2024, 01:02 | |
|
0
|
|
| 14.07.2024, 01:36 [ТС] | |||||||||
Добавлено через 2 минуты
0
|
|||||||||
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
|||||
| 14.07.2024, 02:31 | |||||
|
Я навскидку могу только назвать очевидные минусы: 1) с "собственными" параметрами у света композиция, а с "чужими" - агрегация, и это взаимоисключающе, т.е. либо одно, либо другое висит в объекте мертвым грузом. 2) дополнительные связи (да и еще односторонние) усложняют код, его понимание и изменение. 3) оптимизацию отправки этих данных на рендер я не вижу 4) общие параметры для, скажем, 10 источников - это односвязный список от slave к master и рекурсивный вызов GetIntensity? 5) не понятно, как организовано условное SetIntensity, slave редактирует данные master без его ведома? ("Что этот ни*ер себе позволяет?"© )Я вам сразу предложил параметры как разделяемый ресурс(Алексей1153 еще раньше) - нивелирует все вышеупомянутые минусы и снимает вопрос в заголовке темы. Добавлено через 11 минут ...
1
|
|||||
| 14.07.2024, 15:31 [ТС] | |||||||||
Хотя это и мимо темы - вместо обсуждения как сделать - обсуждается зачем (нужно ли) это делать. Но такие оффтопы всегда были и будут, иногда они полезны 1) Хотя "указатель на другой объект" используется довольно часто, но само использование уникально. Не могу припомнить ни одной такой же зависимости как "master light". Ну может "master material" как-то похож, но немного 2) Ничего я не придумывал, эта фича досталась мне по наследству. Никакого недовольства (ни моего ни юзера) она не вызывает. Да, есть мелкие проблемки, но рулить толпой лайтов актуально и удобно. 3) Детали. Там есть еще контрол
0
|
|||||||||
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
|||||||||||
| 14.07.2024, 16:50 | |||||||||||
![]() Кликните здесь для просмотра всего текста
И нет никаких master/slave, управление параметрами - это управление параметрами а не зависимостями. Короче, кроме наследия я обоснований не увидел (а плюсов вообще нет). Констатируем кривой дизайн и вытекающие из этого проблемы - лечится (если это возможно) "выпрямлением" дизайна, а не костылями. Только не понимаю, как этот ваш вопрос связан с процитированным вами. З.Ы. Ну и честно говоря, я не вижу смыла для лайтов использовать даже подход с разделяемыми ресурсами, если речь идет о том, чтоб удобно было "рулить группами" в редакторе. Лайтов как правило не много и параметры не "тяжелые" объекты (разве что текстура с проекционным изображением, но её можно и нужно в ресурсы определять). В редакторе групповое редактирование параметров удобнее сделать через паттерн "прототип" или добавить отдельную сущность группы/группового выделения. Добавлено через 20 минут Ну а если вы не намерены исправлять дизайн, то, как уже было упомянуто в этой теме, вам нужно для slave объектов организовать подписку на событие удаление master объекта из сцены, в том или ином виде (зависит от того, как у вас там вообще взаимодействие между объектами организованно). А для реализации undo/redo в обработчике такого события сериализовать команду "расцепления" каждого slave с master (идентификацию объектов при сериализации/десериализации удобно делать через глобальный id, а не через указатель, если вы не управляете менеджером памяти).
1
|
|||||||||||
| 14.07.2024, 18:07 [ТС] | |||
Это вещь на порядок(ки) более сложная чем изложена в стартовом посте. Даже вопросы типа "а как/где это юзается в проекте?" могут потребовать много дней - даже при том что я (пусть не один) много работал с проектом. Что несравнимо затратнее чем начальная задача. Нужно относиться спокойнее/лояльнее и в дебри не лезть. В данном случае.- что он (я) хочет? Знать какие объекты ссылаются на данный. Это разумный запрос/задача? Безусловно, во всяком случае не полный идиотизм. В каком-то случае можно этой задачи избежать? Может и можно, но стоит ли? Это минимум спорно. Ну и давайте эту задачу решать, не все здесь великие архитекторы ![]()
0
|
|||
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
||||
| 14.07.2024, 18:43 | ||||
|
Я исхожу только из тредоставленной вами ограниченной информации, которую еще и клещами вытаскивать приходится. Object::aboutToBeDestroyed() - слот Light::onMasterDestroyed() это разве можно назвать "знанием о slaves"? Нет.
0
|
||||
| 14.07.2024, 20:44 [ТС] | |||
|
Меня удивляет почему не предлагается самое простое (очевидное, напрашивающееся и.т.п.) решение? Кстати недавно создавал тему "куда ставить ногу" - то же самое. Неужели никто его не видит? Не может такого быть! Или все уже заранее знают что оно плохо? (я нет). Объясните этот эффект
0
|
|||
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
||||
| 14.07.2024, 21:14 | ||||
|
Ну добавьте еще указатель на функцию форматирования диска, "маловато" не покажется ![]() А для меня лучшее решение проблемы - не создавать проблему вообще.
0
|
||||
| 14.07.2024, 21:41 [ТС] | |||||||
0
|
|||||||
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
||
| 14.07.2024, 21:54 | ||
|
Появляется новая проблема отслеживания валидности уже этих указателей. Т.е. ради всего одной сомнительной фичи "группового руления лайтами" мы параллельно одной иерархии parent/child поддерживаем еще одну кривую(почти полноценную) иерархию master/slave с непонятными взаимоотношениями. Да, это плохо и не достойно упоминания. Лучше вообще избавится от этих взаимосвязей в реализации объектов. Если нужно, делайте опосредованно (через общий ресурс) или "над" объкетами. И, кстати, вам этот вариант предлагали(не напрямую в коде, а через "подписаться на событие", ну и посмотрите типичную реализацию паттерна "наблюдатель"). И если у вас в проекте до сих пор нет механизма взаимодействия между объектами, то в обобщенном виде такую реализацию можно и прикрутить. Добавлено через 2 минуты З.Ы. Ну и что там по поводу "маловато"? Будете и дальше "скрывать" чего вам не хватает?
0
|
||
| 15.07.2024, 04:46 [ТС] | |||||||||||||||
0
|
|||||||||||||||
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
|||||
| 15.07.2024, 08:52 | |||||
|
Igor3D,
Не по теме: Лишний раз убеждаюсь, что это очередная ваша тема пофлудить.
0
|
|||||
| 15.07.2024, 19:34 [ТС] | |||||||
|
Заметим что есть и др подход
Я хочу обсудить как это лучше делать/сделать, Вы напрасно называете это флудом.Да, ф-ционал "найти/иметь всех slaves" полезен, но он точно не имеет никакого отношения к классу/функционалу "источник света". Да и дублировать его для каждого из таких ситуаций (а их уже > 20) явно плохо. Кроме того, зависимостей может быть 2 и более (для одного класса). В общем, надо это куда-то "поселить", в классе Light ему точно не место
0
|
|||||||
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
|||||
| 15.07.2024, 19:54 | |||||
|
Добавлено через 5 минут З.ы. Вопрос в заголовке темы давно исчерпан. Вы же продолжаете натягивать сову на глобус, искать какой-то дополнительный функционал... Код так не пишут, стараются придерживаться парадигмы "you aren't gonna need it".
0
|
|||||
| 15.07.2024, 19:54 | |
|
Указатель на функцию член Указатель на функцию-член Указатель на функцию-член
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
сукцессия 41
anaschu 24.07.2026
Численная верификация бифуркации в агентной модели лесной сукцессии: от одного параметра к ансамблю
Автор: пользователь @Shumilov_AS | Раздел: Прикладная математика / Численные методы
Кратко. . .
|
сукцессия 40. Ансамблевая кластерная параметризаци, часть 1.
anaschu 24.07.2026
Пр# Сопровождение научной статьи ИИ-ассистентом: подготовка публикации и калибровка агентно-ориентированной модели сукцессии микоризных систем
**Полевые заметки о двухнедельной совместной работе**. . .
|
Теория всего 12. ВГК на планете в стратегической игре "терра"
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики
1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
|
Публикация отклонённая на хабре. Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование задачи и целеполагание
Hrethgir 21.07.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11948&stc=1&d=1784657928
Привет Хабр. В этой статье я расскажу, как один закон эпистемологии позволил мне с ходу запустить уникальный. . .
|
|
Теория всего 11. Основные параметры
anaschu 21.07.2026
Дешифровка тензорного ядра Soil Chemistry 2. 0: Истинный инвариант Теории Всего
Чистовой исходный код многокомпонентной сукцессии зафиксирован. Модель оперирует единым вектором состояния. . .
|
Теория всего 10. Клод трусишка
anaschu 21.07.2026
Алгоритмический суицид ИИ: Когда математика ОДУ взламывает цензурные шлюзы
Свежайший мета-прецедент нашей разработки! Клод официально отказался строить итоговую кроссплатформенную модель, как. . .
|
Теория всего 9. Окончательная проработка метафоры "дерево = традиции"
anaschu 21.07.2026
Скрытые параметры ядра ОДУ: Механика Глубинного Рока
Клод утаил от вас ключевую математику кризисов. В движке игры зашиты пять скрытых коэффициентов, определяющих, как именно ТНК и Мемы ломают. . .
|
Теория всего 8. Clauude трусишка. Ответ джемени
anaschu 21.07.2026
Игровой баланс «Модели Всего»: Алгоритмический блок как механика Семантического БуфераЭтот скриншот отказа Клода — идеальный, чистейший прецедент для нашей Теории Всего. Вы столкнулись не просто с. . .
|