|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
|||||||||||||||||||||
Реализовать шаблонную функцию поиска компонентов13.09.2016, 08:00. Показов 1591. Ответов 17
Метки нет (Все метки)
Привет всем. Такой вопрос:
Есть класс Object и класс Component. У класса Component могут быть наследники RigidBodyComponent, TransformComponent и др. Так же каждый компонент имеет имя, которое задается в конструкторе класса:
Делал так:
Как лучше реализовать, то что я хочу? Чтобы именно искалось по ТИПУ(скорее всего вообще не нужно это имя компонента тогда)
0
|
|||||||||||||||||||||
| 13.09.2016, 08:00 | |
|
Ответы с готовыми решениями:
17
Реализовать шаблонную функцию minimum Реализовать шаблонную функцию для обработки заданной матрицы
|
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
|
||||||
| 13.09.2016, 09:00 | ||||||
|
Bretbas, возможно подойдет что-то вроде этого:
Кликните здесь для просмотра всего текста
0
|
||||||
|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
|
| 13.09.2016, 14:39 [ТС] | |
|
DrOffset, да это понятно. Может можно как нибудь без всяких дополнительных статических членов функций и т.п.? Может как нибудь сделать так чтобы название класса само автоматом записывалось через typed.name()? Я пробовал typeid.name() , но оно не фурычит с иерархией классов. То есть даёт не имя класса, а имя базового класса
0
|
|
|
1379 / 406 / 144
Регистрация: 22.10.2014
Сообщений: 872
|
|
| 13.09.2016, 15:07 | |
|
Bretbas, Если у T в конструкторе и деструкторе нет сайдэффектов, то шанс инлайнинга в вашем коде очень высок.
0
|
|
|
710 / 283 / 16
Регистрация: 31.03.2013
Сообщений: 1,340
|
|
| 13.09.2016, 15:32 | |
|
В любой непонятной ситуации используй паттерн визитор
0
|
|
|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
|
| 13.09.2016, 18:50 [ТС] | |
|
Nosey, я вообще не понял, что ты написал(
Voivoid, так в паттерны визитом тоже самое( так же нужно задавать название класса. Вот смотрите, пользователь создаёт компонент производный от базового Component. Придётся пользователю при создании класса компонента задавать ему имя. А я хочу реализовать, чтобы система сама определяла название класса, регестрировала его и при поиске ключ был именно этот. Так вообще реально сделать? Если нет, то я сразу же перейду на другие задачи
0
|
|
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
|
|||||||
| 13.09.2016, 19:55 | |||||||
|
Кликните здесь для просмотра всего текста
http://rextester.com/BNAI27181
0
|
|||||||
|
710 / 283 / 16
Регистрация: 31.03.2013
Сообщений: 1,340
|
||
| 13.09.2016, 20:20 | ||
|
0
|
||
|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
|
| 14.09.2016, 18:16 [ТС] | |
|
DrOffset, так не пробовал. Попробую, когда на работе буду
Voivoid, Компоненты хранят только информацию, и прежде чем их использовать, нужно найти их и заполнить данными. А действия с этими компонентами производят системы. А системы хранятся в сцене...и тд тд тд )
0
|
|
|
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
|
||||||
| 15.09.2016, 13:32 | ||||||
|
DrOffset, Почему не:
registerComponent(&d1);
0
|
||||||
|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
||||||
| 15.09.2016, 17:14 [ТС] | ||||||
|
DrOffset, неее. А можно ли как нибудь сделать, чтобы пользователь при создании компонента вообще никак не вводил его имя? Типа такого:
0
|
||||||
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
|
|||||||
| 15.09.2016, 20:09 | |||||||
Сообщение было отмечено Bretbas как решение
Решение
Кроме того, в ComponentRegister можно засунуть и регистрацию указателя в каком-нибудь синглтоне, для получения его потом по имени.
2
|
|||||||
|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
|
| 16.09.2016, 17:30 [ТС] | |
|
DrOffset, вот так уже не плохо...хотя все равно нужно вводить имя класса при создании
ну в принципе пойдет Спасибо
0
|
|
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
|
||||||||||||
| 16.09.2016, 18:19 | ||||||||||||
0
|
||||||||||||
|
710 / 283 / 16
Регистрация: 31.03.2013
Сообщений: 1,340
|
||
| 16.09.2016, 21:20 | ||
|
0
|
||
|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
||||||||||||||||
| 19.09.2016, 19:56 [ТС] | ||||||||||||||||
|
DrOffset, вот решил применить код, который ты написал. Суть в том, что такой подход не решает проблему полностью. К примеру полиморфизм. К примеру компоненты храняться в векторе:
Voivoid, честно говоря, я не очень понимаю где визитор может применяться. Точнее понимаю, но в моей системе придется переписывать дохрена чего, чтобы добавить этот паттерн
0
|
||||||||||||||||
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
|
|||
| 19.09.2016, 20:03 | |||
|
Ты код-то мой внимательно посмотри. У меня Component и ComponentRegister - это разные классы совершенно не случайно. Component - это абстрактный интерфейс, как раз для use-case`ов вроде этого:
1
|
|||
|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
|
| 19.09.2016, 20:43 [ТС] | |
|
DrOffset, я вначале не понял зачем этот класс
Спасиибо
0
|
|
| 19.09.2016, 20:43 | |
|
Помогаю со студенческими работами здесь
18
Реализовать шаблонную функцию, считающую сумму элементов массива на заданном интервале
Реализовать шаблонную функцию для нахождения количества локальных минимумов заданной матрицы Передача указателя на шаблонную функцию в другую функцию
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
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. Пошагово создадим проект для загрузки изображения. . .
|