| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > reflection in C++ |
| Автор: sol78 6.4.2008, 18:06 |
| Доброе вам время суток! Мне нужно реализовать принцип Reflection, т.е. иметь возможность создавать обьект класс, который определяется Run time Как это профессиональнее сделать? Я понимаю что должна быть к-л функ. которая принимает парамет типа "Класс" и возращает птр на обьект типа Класс. Класс который заинтересован в етом тулсе должен пройти резистрацию, но известно что для регистрации вызывать к-л функ. ето должно как то делаться в нутри, но как? |
| Автор: korian 6.4.2008, 18:11 |
| http://www.insidecpp.ru/patterns/factory/ |
| Автор: JackYF 6.4.2008, 21:23 |
Если время и нервы присутствуют, можешь посмотреть, как это сделали в QT - класс QMetaType и всё, что с ним связано. А также почитать "Design Patters", про фабрики и билдеры. |
| Автор: Любитель 7.4.2008, 00:17 |
| 1. Тебе нужно получить способ получения метафинвы о типах. То что даёт стандартно typeid явно не хватит 2. Нужна абстракция для вызова методов. Всмысле передача параметров в каком-нибудь invoke в виде массива object специального класса. Плюс должны быть готовые его врапперы для встроенных типов. И шаблонные классы для своих врапперов (предыдущий пункт - на базе этого). 3. Возврат (результаты методов или сконструированный объект) - тоже в виде этого типа. Как достучаться до физического значения? Ничего лучше void* data() я не вижу 4. Тебе нужен маппинг "имя класса" -> "объект Type". Этот памминг - один из способов получение объекта класса Type. 5. Но не единственный Вот так - навскидку |
| Автор: xvr 7.4.2008, 12:30 | ||
Посмотри на http://opencxx.sourceforge.net/ |
| Автор: Vyacheslav 8.4.2008, 10:30 |
| Вот простенький прототип решения подобной задачи http://forum.vingrad.ru/index.php?showtopic=9713&view=findpost&p=60738 |
| Автор: Lazin 8.4.2008, 10:39 |
не обновлялся с 2004-го.. пациент скорее мертв чем жив =) |
| Автор: xvr 8.4.2008, 11:16 | ||
Есть реинкарнация http://www.viva64.com/vivacore.php |
| Автор: Любитель 8.4.2008, 12:26 |
| Ждём автора... Нужен более менее полноценный рефлекшн или только создание объектов (причём наследников какого-то определённого класса) по строковому имени? |