Название: Карта с метатипами на qt Отправлено: Познающий Дао QML от Март 07, 2013, 08:44 Как реализовать подобный функционал в рамках Qt без "лишних телодвиджений"
на примере псевдокода: Код: class Handler {}; Думаю должно быть что-то готовое... Название: Re: Карта с метатипами на qt Отправлено: carrygun от Март 07, 2013, 09:05 Енумы? Или я чтото не понял?
Название: Re: Карта с метатипами на qt Отправлено: Bepec от Март 07, 2013, 09:12 Непонятный вопрос, приведён непонятный код. Чего то всё непонятно.
Название: Re: Карта с метатипами на qt Отправлено: Igors от Март 07, 2013, 10:41 Думаю должно быть что-то готовое... Думаю что не должно т.к. в языке такого нет, объект возвращаемый по значению имеет свой, фиксированный типНазвание: Re: Карта с метатипами на qt Отправлено: Bepec от Март 07, 2013, 13:10 Не, ну в принципе он наследника может возвращать по типу как бы.
В одном проекте у меня похоже сделано - имеются ноды различных типов с общим предком. И при создании можно написать Код: MyStructNode * tempPoint = *::StructNode.newNode(*::TypeNode); PS или я чего то не понимаю? нужен ТС для разборки :D Название: Re: Карта с метатипами на qt Отправлено: Познающий Дао QML от Март 07, 2013, 13:30 Енумы? Или я чтото не понял? Т.е. заранее задать список классов? - такой вариант мне не подходит... Я так понял нужно использовать что-то типа: Код: int QMetaType::type(const char * typeName) [static] Да наследование есть... дело не в наследовании и в возвращаемом значении... Дело в получении объекта из мапа по типу класса. Аналогия из джава: Код: Map<Class, Object> map; map.get(MyClass.class); Конечно можно вместо типа подставлять строку, - вот только в qt, как я понял, строки не кэшируются в рантайме, - поэтому хэш строки будет каждый раз заново вычисляться... Вот и получается что с++ это какое-то недо ооп... т.е. классы как бы есть, а универсальной мета-системы нет иначеб зачем создатели Qt плодили ненужные сущности типа QMetaType ;) Название: Re: Карта с метатипами на qt Отправлено: Old от Март 07, 2013, 13:34 Вот и получается что с++ это какое-то недо ооп... т.е. классы как бы есть, а универсальной мета-системы нет иначеб зачем создатели Qt плодили ненужные сущности типа QMetaType ;) Поищи в интернете про фабрики объектов...Название: Re: Карта с метатипами на qt Отправлено: Познающий Дао QML от Март 07, 2013, 13:55 Поищи в интернете про фабрики объектов... И что мне это даст? - мне не нужно создавать объект! ;)Название: Re: Карта с метатипами на qt Отправлено: Old от Март 07, 2013, 14:03 мне не нужно создавать объект! ;) Ok. Тогда что нужно точно. Получить копию объекта из мапа, получить ссылку (константную) на объект из мапа?Название: Re: Карта с метатипами на qt Отправлено: Igors от Март 07, 2013, 14:08 PS или я чего то не понимаю? Ах как Вы давеча девушку шпыняли, дескать "непонимание принципа работы С++" и все такое. А сам? :) Чего же путать возвращаемый объект с указателем? Вернуть указатель/ссылку на полиморфный тип можно, а вот объект нет. Да и возвращать объекты по значению, вообще говоря, плохо, это здесь с имплисит шарой распустились, а в том же STL быстро по рогам получите.Т.е. заранее задать список классов? - такой вариант мне не подходит... А придется так или иначе создавать фабрику (или ее подобие)Вот и получается что с++ это какое-то недо ооп... т.е. классы как бы есть, а универсальной мета-системы нет иначеб зачем создатели Qt плодили ненужные сущности типа QMetaType ;) Холивар "какой язык лучше" не имеет смысла. Не нравится - не пишите на плюсах Название: Re: Карта с метатипами на qt Отправлено: Познающий Дао QML от Март 07, 2013, 14:45 А еще говорят у программистов плохо развито воображение ;)
... блин написано же было на примере псевдокода ... Хорошо др. пример карты с метатипами на qt: Код: QMap<MetaTypeId, QString> map; Как получить MetaTypeId я уже без вас понял, осталось понять как и где его хранить чтобы приблизиться к функционалу MyHandler::Type - т.е. в статистической область видимости класса MyHandler... А не глобальная с предопределением (т.е. использование перечислений в базовом классе или общем файле). Название: Re: Карта с метатипами на qt Отправлено: ViTech от Март 07, 2013, 15:01 QMetaObject и его newInstance смотрели?
На вопрос Ok. Тогда что нужно точно. Получить копию объекта из мапа, получить ссылку (константную) на объект из мапа? так и не ответили. Что нужно-то в конечном итоге? Лучше на словах, без псевдокодов.Название: Re: Карта с метатипами на qt Отправлено: Познающий Дао QML от Март 07, 2013, 15:05 даже метод с префиксом "get" а не "new" (create) - вот и почему ваше воображение подумало, что мне нужна "фабрика классов" ;)
В общем ничего больше не нужно... Вот и приходится осваивать с++ Qt так как не можем найти вменяемых разработчиков ;) Название: Re: Карта с метатипами на qt Отправлено: ViTech от Март 07, 2013, 15:15 Если объекты создавать не надо, значит они у вас уже есть. Как вы их в map/hash/... положите, с каким идентификатором, так и извлекайте, в чем проблема?
Вменяемых разработчиков вы вряд ли найдете, пока не научитесь вменяемо задачи и вопросы формулировать ;). Название: Re: Карта с метатипами на qt Отправлено: Bepec от Март 07, 2013, 16:36 Весёлый паренёк.
Поставил непонятную задачу. Покритиковал людей и смылся :D Название: Re: Карта с метатипами на qt Отправлено: panAlexey от Март 07, 2013, 19:38 Вот и приходится осваивать с++ Qt так как не можем найти вменяемых разработчиков ;) ваш японский не каждый разработчик поймет. может проблема в излагающем? |