| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > Что такое динамический класс, как создать в С++? |
| Автор: barbocc 26.1.2011, 16:32 |
| Доброго времени суток! Нужна помощь в терминологии. Что есть динамический класс, как его релизовать в C++, зачем он нужен? |
| Автор: baldina 26.1.2011, 17:38 | ||
| Динамический класс имеет изменяемый (во время выполнения) набор членов и методов. Присутствует в языках с динамической типизацией, например JavaScript. В принципе на вопрос "зачем он нужен" можно ответить так - для того, что бы выделить особенности конкретного объекта среди других (того же типа). В С++ не поддерживается (С++ имеет статическую типизацию), С++ имеет другие парадигмы для аналогичных целей. Требуемое поведение (изменение списка переменных в классе и работа с ними по имени) в С++ можно реализовать например при помощи отображений. В любой реализации будет ряд технических проблем (например, если переменные должны быть произвольного типа), более или менее успешно решаемых (например для решения проблемы типа можно применить boost::any)
С функциями аналогичное решение и аналогичные проблемы. |
| Автор: barbocc 26.1.2011, 17:49 |
| Спасибо, хм... все понятно и просто, но нужен boost. А через шаблоны это можно как-нибудь реализовать? |
| Автор: triclosan 26.1.2011, 17:57 |
можно прибегнуть к использованию виртуальных функций, понятное дело ограничиваемся тут определенным набором классов. |
| Автор: baldina 26.1.2011, 18:19 |
| triclosan, как, используя виртуальные функции, добавить новую функцию объекту (не классу!)? |
| Автор: borisbn 26.1.2011, 18:23 |
Нет, т.к. шаблоны существуют только на этапе компиляции, на этапе выполнения их уже нет. Ты же хочешь, чтобы имя члена класса могло задаваться в рантайме, например пользователь вводит. во-первых, тоже мне бином Ньютона... а какая проблема поставить ? во-вторых, можешь написать свой класс any или variant или ... назови как хочешь и делать как предложил baldina |
| Автор: baldina 26.1.2011, 18:25 |
ага. http://www.usenix.org/publications/library/proceedings/usenix98/full_papers/hjalmtysson/hjalmtysson.pdf |
| Автор: barbocc 26.1.2011, 18:39 |
| Всем спасибо Тему закрываю) |
| Автор: baldina 26.1.2011, 18:42 |
| понятно, через шаблоны можно только функционал добавить. вот http://forum.vingrad.ru/forum/topic-311688.html изобретают сложное и красивое, есть там и на эту тему |