Russian Qt Forum
Ноябрь 26, 2024, 01:30
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Общие вопросы
>
metaobject()
Страниц:
1
[
2
]
3
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: metaobject() (Прочитано 20143 раз)
BuRn
Гость
Re: metaobject()
«
Ответ #15 :
Март 03, 2012, 23:49 »
Цитата: BRE от Март 03, 2012, 23:14
Что-то я запутался, но для этого:
Цитата: BuRn от Март 03, 2012, 23:07
начальная суть вообще по имени класса создать объект с таким типом
можно посмотреть на:
int QMetaType::type ( const char * typeName ) [static]
void * QMetaType::construct ( int type, const void * copy = 0 ) [static]
но construct возвращает void, все равно не зная имени, а точнее знаем мы его только в виде строки , как преобразовать в нужному непонятно
Записан
mutineer
Гость
Re: metaobject()
«
Ответ #16 :
Март 04, 2012, 00:00 »
Цитата: BuRn от Март 03, 2012, 23:49
но construct возвращает void, все равно не зная имени, а точнее знаем мы его только в виде строки , как преобразовать в нужному непонятно
А указатель, в который ты полученный объект сохранять планируешь, какого типа будет?
Записан
BuRn
Гость
Re: metaobject()
«
Ответ #17 :
Март 04, 2012, 00:01 »
Цитата: mutineer от Март 04, 2012, 00:00
Цитата: BuRn от Март 03, 2012, 23:49
но construct возвращает void, все равно не зная имени, а точнее знаем мы его только в виде строки , как преобразовать в нужному непонятно
А указатель, в который ты полученный объект сохранять планируешь, какого типа будет?
так в том то вся и проблема , хотелось бы тупо со строки QString name="MyClass"; создать объект MyClass a ;к примеру
Записан
mutineer
Гость
Re: metaobject()
«
Ответ #18 :
Март 04, 2012, 00:04 »
как ты собираешься это использовать? предположим ты написал такой метод. И что с ним делать?
?? *pointer = createObjectOfClass("MyClass");
что вместо знаков вопроса писать планируешь?
Записан
BuRn
Гость
Re: metaobject()
«
Ответ #19 :
Март 04, 2012, 00:06 »
Цитата: mutineer от Март 04, 2012, 00:04
как ты собираешься это использовать? предположим ты написал такой метод. И что с ним делать?
?? *pointer = createObjectOfClass("MyClass");
что вместо знаков вопроса писать планируешь?
в этом то вся и проблема
Записан
mutineer
Гость
Re: metaobject()
«
Ответ #20 :
Март 04, 2012, 00:08 »
Боюсь в этом языке задача невозможна именно в таком виде. Разве что пронаследовать всех от одного базового класса (QObject, например) и безусловно кастовать указатель полученный к нему
Ну или может поможет какая-нить жуткая шаблонная магия. Я в ней не особо силен
«
Последнее редактирование: Март 04, 2012, 00:12 от mutineer
»
Записан
fuCtor
Гость
Re: metaobject()
«
Ответ #21 :
Март 04, 2012, 12:59 »
Если правильно понял, то чем-то похоже на IoC:
http://qtioccontainer.sourceforge.net/
Еще было решение, QNimbleContainer называлось, тоже вариант реализации IoC, только вот что-то все следы в инете о нем пропали, если интересны будут исходники, могут выложить (на работе сохранилось)
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: metaobject()
«
Ответ #22 :
Март 04, 2012, 14:07 »
Цитата: mutineer от Март 04, 2012, 00:08
Ну или может поможет какая-нить жуткая шаблонная магия. Я в ней не особо силен
Я (мельком) видел что-то похожее в книге Александреску. Ну типа как клонировать объект или создавать экземпляр без явного указания типа. Может имеет смысл прильнуть к теории.
Записан
Sahab
Гость
Re: metaobject()
«
Ответ #23 :
Март 04, 2012, 15:19 »
Четко сформулировать вопрос еще раз можно?
а то как-то по топику размазана логика.
Записан
BuRn
Гость
Re: metaobject()
«
Ответ #24 :
Март 04, 2012, 15:34 »
Цитата: Sahab от Март 04, 2012, 15:19
Четко сформулировать вопрос еще раз можно?
а то как-то по топику размазана логика.
есть строка , пример :QString name = "MyClass" ; нужно создать класс с типом , который хранится в переменной name, т.е. MyClass
Записан
BRE
Гость
Re: metaobject()
«
Ответ #25 :
Март 04, 2012, 15:40 »
Цитата: BuRn от Март 04, 2012, 15:34
есть строка , пример :QString name = "MyClass" ; нужно создать класс с типом , который хранится в переменной name, т.е. MyClass
Предположим создали, что ты дальше с ним делать планируешь?
Записан
BuRn
Гость
Re: metaobject()
«
Ответ #26 :
Март 04, 2012, 15:49 »
виртуальными методами пользоваться
Записан
Sahab
Гость
Re: metaobject()
«
Ответ #27 :
Март 04, 2012, 17:31 »
Код:
int id = QMetaType::type("MyClass");
QObjectOrDerivedFromQObject* obj = QMetaType::construct ( id );
ну и конечно почитать на тему Q_DECLARE_METATYPE()
Записан
BuRn
Гость
Re: metaobject()
«
Ответ #28 :
Март 04, 2012, 17:44 »
Цитата: Sahab от Март 04, 2012, 17:31
Код:
int id = QMetaType::type("MyClass");
QObjectOrDerivedFromQObject* obj = QMetaType::construct ( id );
ну и конечно почитать на тему Q_DECLARE_METATYPE()
не совсем то ...
Записан
BRE
Гость
Re: metaobject()
«
Ответ #29 :
Март 04, 2012, 17:45 »
Цитата: BuRn от Март 04, 2012, 17:44
не совсем то ...
Почему?
Записан
Страниц:
1
[
2
]
3
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...