![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Sahab |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 151 Регистрация: 1.9.2009 Репутация: нет Всего: 3 |
||||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
я тоже противник ограничений, но давать юзеру пол-лопатки и дырявое ведерко, для меня не что иное как издевательство Это сообщение отредактировал(а) mes - 6.10.2011, 21:26 |
|||
|
||||
| kosmonaFFFt |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 538 Регистрация: 14.4.2008 Где: Иннополис Репутация: нет Всего: 5 |
Может не reflectcpp::create("obj_name = type1"), а reflectcpp::create("type1", "obj_name")? И еще мое мнение - раз уж это для C++, не лучше ли будет использовать вместо char* нормальный std::string и классы вместо структур с функциями? -------------------- ![]() |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
структура с функциями это тот же класс.. иногда удобнее, потому что по умолчанию public.. |
|||
|
||||
| boostcoder |
|
||||||||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
mes, что конкретно Вы хотите сказать? без намеков, пожалуйста.
тут есть некоторая неопределенность.
отметки 1 и 2. т.е. вторым аргументом может быть как имя объекта, так и аргумент в конструктор объекта. хотя я склоняюсь к тому, чтоб обязать юзера паковать аргументы в класс-обертку, например такой: http://liveworkspace.org/code/7f3184c1c270...a6f850de238eccb
Добавлено через 6 минут и 19 секунд т.е. использоваться это будет как-то так:
Это сообщение отредактировал(а) boostcoder - 7.10.2011, 10:13 |
||||||||
|
|||||||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
ну вот возьмем Ваш последний пример.. зачем тогда нужна вся rtti_ex, если в конечном счете никакой безопасности при передачи аргументов ? если хотите динамическую типизацию, так делайте ее, если достаточно небезопасного инвокинга - делайте его, но не надо смешивать различные подходы в один соус.. Это сообщение отредактировал(а) mes - 7.10.2011, 11:12 |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
||||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
||||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
не связываете объекты с рантайм информацией.. Добавлено через 2 минуты так объсните что я могу делать с void* , если тип задан в рантайме.. Добавлено через 4 минуты и 48 секунд Вы оглядываетесь на языки (ява, шарп и т.д.) и думаете почему в них есть рефлексия и все плюшки для простых типов, а Вам на С++ нельзя... так ? так в тех языках, эти простые типы далеко не так просты, и каждый является объектом.. т.е. (как минимум) имеет ссылку на тип, к которому он принадлежит.. а так же существует целый ряд правил, о совместимости этих типов.. Добавлено через 8 минут и 15 секунд кстати c++/cli (для .net) тоже умеет многое из названного, но зато какими жертвами.. |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
+ = Ваши предложения? |
|||
|
||||
| kosmonaFFFt |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 538 Регистрация: 14.4.2008 Где: Иннополис Репутация: нет Всего: 5 |
Я тут подумал, и, по моему, регистрация уже созданных объектов в ком-нибудь словаре по имени немного из другой области - обычно такая функциональность встречается в IOC контейнерах и к reflection отношения имеет мало, например в Java и C# в reflection такого нет... Передача параметров в виде "obj_name = type1" тоже на мой взгляд неудачна, т. к. во первых придется писать парсер выражений, а во вторых нарушается статичекая типизация C++... Если и делать регистрацию объектов в контейнере, то лучше отдельным методом...
Я имел в виду, что не лучше ли сделать вместо структуры rtti_ex и функций по работе с ней класс, например RttiEx, получать объект этого класса для типа и работать дальше с ними... Примерно так:
Соответственно классы RttiEx, Field, Method из вышеприведенного примера будут реализованы в reflection-библиотеке и предоставлять универсальный механизм для работы с объектами и классами в рантайме... Это сообщение отредактировал(а) kosmonaFFFt - 7.10.2011, 13:51 -------------------- ![]() |
||||
|
|||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
mes, reflectpp::create() используется только в с++ коде. это библиотечная реализация.
далее, в той самой функции(которую будет создавать компилятор) которая создает объект одного типа, я буду генерить каст из указателей на void в нужный тип. и после этого передавать в конструктор. если Вы об этом. Добавлено @ 14:01 это нужно для binding`а с++ кода с run-time скриптом. т.е. скрипт может обращаться к объектам созданным не им только в том случае, если эти объекты зареганы в мапе. сам же скрипт, будет регать все объекты которые создает. это меньшее о чем я беспокоюсь. так в том то и смысл. нет. rtti_ex_ - это внутренние структуры. они используются только внутрях всего этого дела. юзер же работает с class_ и member_. смотрите: http://liveworkspace.org/code/f6f7dc0eb32d...a001570e37d93ec Добавлено @ 14:01 rtti_ex_ у юзера не будет. будут class_ и member_. Это сообщение отредактировал(а) boostcoder - 7.10.2011, 14:04 |
|||
|
||||
| mes |
|
||||||||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
только вот не компилится.. Добавлено через 1 минуту и 52 секунды ну да ладно..
и зачем в динамическом методе нам шаблон ?! Добавлено через 4 минуты и 52 секунды
ну вот например связка : http://liveworkspace.org/code/5b558ca8d6b8...4616b3222f3422d гарантирующая правильное создание удаление, и дополняется возможностью проверки совместимости типов.. ну и создание по имени то же не за горами |
||||||||||
|
|||||||||||
| kosmonaFFFt |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 538 Регистрация: 14.4.2008 Где: Иннополис Репутация: нет Всего: 5 |
Извините за немного оффтоп... Вам рефлекшн нужен только для скриптинга? Просто по моему рефлекш к скриптингу имеет мало отношения, просто он может при этом использоваться, а может и не использоваться... -------------------- ![]() |
|||
|
||||
| boostcoder |
|
||||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
lда. недописал, ибо некоторые моменты не ясны. собственно этим и занимаюсь. его там не будет. по идее, там будет args_pack.
осмыслить нужно... Добавлено через 2 минуты и 41 секунду нет. это предполагаемая финальная возможность. основная же цель - привнести в с++ расширенную информацию о типах, плюс, динамические плюшки для операций с типами. Добавлено через 11 минут и 16 секунд
понял. о чем-то подобном я писал выше. но я предполагал что rtti_ex_ должен содержать в себе указатели на функции, которые плагин будет генерить для каждого типа. и при инициализации глобального массива rtti_ex_ привязывать каждый элемент к своим функциям. |
||||
|
|||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |