Член указатель09.07.2024, 23:01. Показов 3936. Ответов 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,289
|
||
| 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 | |
|
Указатель на функцию член Указатель на функцию-член Указатель на функцию-член
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Вангую, что это не пройдёт модерацию, и на неделе я запущу свой сервер.
Hrethgir 19.07.2026
Эта публикация сейчас в песочнице и ждёт приглашения.
https:/ / habr. com/ ru/ sandbox/ 295048/
начало и оглавление
-
Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование. . .
|
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
|
32 сукцессия
anaschu 19.07.2026
сукцессия 28‑мерное ядро стабилизировано
Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не «подкручивает» сходимость —. . .
|
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано
Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
|
|
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0)
Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона
Уважаемые коллеги!
В продолжение. . .
|
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии
Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
|
Текстовый слайдер с нумерацией страниц и кроссбраузерность.
russiannick 18.07.2026
Один мой друг написал текстовый слайдер с нумерацией страниц. Сегодня я расскажу как он умудрился подружить его с кроссбраузерностью.
Очевидно сложно угодить с шириной каждому браузеру. Один крадет. . .
|
Грибы - это мемы, дерево - это человек. Применение микоризной модели к теории меметики Докинза.
anaschu 18.07.2026
Меметический изоморфизм теории «всего»: Грибная сукцессия как модель эволюции идей Докинза
Базовый код системы ОДУ микоризной сукцессии описывает не просто биологию, а универсальную. . .
|