Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Что такое динамический класс, как создать в С++? 
V
    Опции темы
barbocc
Дата 26.1.2011, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 26.1.2011

Репутация: нет
Всего: нет



Доброго времени суток!
Нужна помощь в терминологии.
Что есть динамический класс, как его релизовать в C++, зачем он нужен?
PM MAIL   Вверх
baldina
Дата 26.1.2011, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 15
Всего: 101



Динамический класс имеет изменяемый (во время выполнения) набор членов и методов. Присутствует в языках с динамической типизацией, например JavaScript.
В принципе на вопрос "зачем он нужен" можно ответить так - для того, что бы выделить особенности конкретного объекта среди других (того же типа). В С++ не поддерживается (С++ имеет статическую типизацию), С++ имеет другие парадигмы для аналогичных целей.

Требуемое поведение (изменение списка переменных в классе и работа с ними по имени) в С++ можно реализовать например при помощи отображений. В любой реализации будет ряд технических проблем (например, если переменные должны быть произвольного типа), более или менее успешно решаемых (например для решения проблемы типа можно применить boost::any)
Код

class Foo {
 std::map<std::string, boost::any> map;
 public:
   boost::any& operator[](const std::string& key) { return map[key]; }
};

С функциями аналогичное решение и аналогичные проблемы.
PM MAIL   Вверх
barbocc
Дата 26.1.2011, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 26.1.2011

Репутация: нет
Всего: нет



Спасибо, хм... все понятно и просто, но нужен boost. А через шаблоны это можно как-нибудь реализовать?
PM MAIL   Вверх
triclosan
Дата 26.1.2011, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 515
Регистрация: 18.8.2006

Репутация: 2
Всего: 12



Цитата(baldina @  26.1.2011,  17:38 Найти цитируемый пост)
С функциями аналогичное решение и аналогичные проблемы. 

можно прибегнуть к использованию виртуальных функций, понятное дело ограничиваемся тут определенным набором классов.
PM MAIL   Вверх
baldina
Дата 26.1.2011, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 15
Всего: 101



triclosan, как, используя виртуальные функции, добавить новую функцию объекту (не классу!)?
PM MAIL   Вверх
borisbn
Дата 26.1.2011, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



Цитата(barbocc @  26.1.2011,  17:49 Найти цитируемый пост)
А через шаблоны это можно как-нибудь реализовать?

Нет, т.к. шаблоны существуют только на этапе компиляции, на этапе выполнения их уже нет. Ты же хочешь, чтобы имя члена класса могло задаваться в рантайме, например пользователь вводит.

Цитата(barbocc @  26.1.2011,  17:49 Найти цитируемый пост)
все понятно и просто, но нужен boost

во-первых, тоже мне бином Ньютона... а какая проблема поставить ?
во-вторых, можешь написать свой класс any или variant или ... назови как хочешь и делать как предложил 
baldina


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
baldina
Дата 26.1.2011, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 15
Всего: 101



Цитата(barbocc @  26.1.2011,  17:49 Найти цитируемый пост)
А через шаблоны это можно как-нибудь реализовать? 

ага.
http://www.usenix.org/publications/library...hjalmtysson.pdf
PM MAIL   Вверх
barbocc
Дата 26.1.2011, 18:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 26.1.2011

Репутация: нет
Всего: нет



Всем спасибо smile 
Тему закрываю)
PM MAIL   Вверх
baldina
Дата 26.1.2011, 18:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 15
Всего: 101



понятно, через шаблоны можно только функционал добавить.
вот тут изобретают сложное и красивое, есть там и на эту тему
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0578 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.