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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> полиморфная модификация объектов 
:(
    Опции темы
mes
Дата 11.11.2011, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


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

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



Цитата(azesmcar @  11.11.2011,  14:19 Найти цитируемый пост)
А зачем это нужно? Они же не меняют наших исходников. 

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

со статическим контролем не получится без изменения кода, просто его можно организовать так, чтоб не лезле в ваш, а просто добавляли свои исходники..



--------------------
PM MAIL WWW   Вверх
azesmcar
Дата 11.11.2011, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

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



Цитата(mes @  11.11.2011,  15:22 Найти цитируемый пост)
со статическим контролем не получится без изменения кода, просто его можно организовать так, чтоб не лезле в ваш, а просто добавляли свои исходники..

а, в этом смысле...ну в принципе не желательно, но это возможно.
PM   Вверх
mes
Дата 11.11.2011, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


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

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



Цитата(azesmcar @  11.11.2011,  14:23 Найти цитируемый пост)
ну в принципе не желательно, но это возможно. 

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

если остановитесь на статическом, то Александреску разбирает в одной из своих книг (в какой сейчас не помню) генерацию визитеров по списку типов.. 
от списка типов уйти не получится и поэтому перекомпиляция при изменении будет неизбежна.. 




Это сообщение отредактировал(а) mes - 11.11.2011, 15:32


--------------------
PM MAIL WWW   Вверх
azesmcar
Дата 11.11.2011, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

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



Цитата(mes @  11.11.2011,  15:25 Найти цитируемый пост)
если остановитесь на статическом, то Александреску разбирает в одной из своих книг (в какой сейчас не помню) генерацию визитеров по списку типов.. 

На мой взгляд динамически было бы правильнее в данной ситуации.
PM   Вверх
mes
Дата 11.11.2011, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


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

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



Цитата(azesmcar @  11.11.2011,  14:45 Найти цитируемый пост)
На мой взгляд динамически было бы правильнее в данной ситуации. 

угу тем более что  библиотека для работы с полиморфными объектами..

Добавлено через 2 минуты и 35 секунд
но тогда надо будет ввести свою систему типов.. (или просто uid, если предполагается взаимодействие выходящее за границы приложения.. например по сети)


--------------------
PM MAIL WWW   Вверх
azesmcar
Дата 11.11.2011, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

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



Цитата(mes @  11.11.2011,  15:55 Найти цитируемый пост)
но тогда надо будет ввести свою систему типов.. (или просто uid, если предполагается взаимодействие выходящее за границы приложения.. например по сети) 

т.е. query_interface?

Добавлено через 1 минуту и 47 секунд
Цитата(mes @  11.11.2011,  15:55 Найти цитируемый пост)
если предполагается взаимодействие выходящее за границы приложения.. например по сети

нет, этого не предполагается.

PM   Вверх
baldina
Дата 11.11.2011, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(azesmcar @  11.11.2011,  15:08 Найти цитируемый пост)
Почему нет такой возможности? Есть dynamic_cast.

это можно, да. но это уже не полиморфизм, а огромный switch. если бы он Вам нравился, темы не было б
С++ статически типизирован, а dynamic_cast не добавляет динамичности в полной мере, эт только костыль

Цитата(azesmcar @  11.11.2011,  15:12 Найти цитируемый пост)
 как я понимаю решению задачи это не поможет? 

поможет. почитайте. интересно. только сами не захотите использовать, т.к. слишком громоздко.
если кратко, то АОП решает те же задачи, что и ООП, а также те, которые он не в состоянии решить (и добавляет проблем которых раньше не было  smile)
для приспособления идеи к существующим языкам существуют пакеты, суть которых сводится к языковым расширениям, которые компилируются в код на целевом языке. плюс в том, что на расширении функционал реализовать гораздо проще. например, добавление аспекта (например, функции) делается элементарно, а в итоговой программе на целевом языке исправляются все классы, куда ее нужно добавить.
почитайте сами, это слишком обширная тема для одного поста smile 

Цитата(mes @  11.11.2011,  15:22 Найти цитируемый пост)
Цитата(azesmcar @  11.11.2011,  14:19 )
А зачем это нужно? Они же не меняют наших исходников. 

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

со статическим контролем не получится без изменения кода, просто его можно организовать так, чтоб не лезле в ваш, а просто добавляли свои исходники..

Йес!!  smile я о том и говорил. 
хорошо бы иметь больше информации об архитектуре проекта, о том как фреймворк связывается с кодом пользователей.
Если пользователи просто пишут расширения к откомпилированному коду, видимо без query-interface в каком-то его виде не обойтись. изобретёте еще один COM.
когда я приводил в пример boost::operators, имелось в виду, что проект компилируется целиком, т.е. ваш код и пользовательский

Добавлено через 2 минуты и 47 секунд
а, еще...
если пользователи добавляют расширения к откомпилированному коду в виде откомпилированного кода, т.е. интерфейс предопределен и неизменен, то никакой АОП не поможет.
точнее, он поможет Вам как разработчику при внесении изменений/расширений в проект, но с точки зрения пользователей ничего не изменится
PM MAIL   Вверх
azesmcar
Дата 11.11.2011, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

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



Цитата(baldina @  11.11.2011,  16:22 Найти цитируемый пост)
хорошо бы иметь больше информации об архитектуре проекта, о том как фреймворк связывается с кодом пользователей.


Дело в том, что на данный момент никто не с чем ничего не связывает, если кому-то что-то нужно, это делаем мы. smile 
Вот мы и хотим взвалить ненужную нам работу на чужие плечи. А как - это уже другое дело.
У них есть заголовочные файлы и библиотеки, будет считать исходников у других нету, мы выдаем им уже готовый фреймворк.

Добавлено через 31 секунду
Цитата(baldina @  11.11.2011,  16:22 Найти цитируемый пост)
если пользователи добавляют расширения к откомпилированному коду в виде откомпилированного кода, т.е. интерфейс предопределен и неизменен, то никакой АОП не поможет.

Примерно так оно и должно быть.

Добавлено через 57 секунд
Цитата(baldina @  11.11.2011,  16:22 Найти цитируемый пост)
это можно, да. но это уже не полиморфизм, а огромный switch. если бы он Вам нравился, темы не было б

Вот именно smile 
PM   Вверх
mes
Дата 11.11.2011, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


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

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



Цитата(azesmcar @  11.11.2011,  14:08 Найти цитируемый пост)
ну предложите четвертый

http://liveworkspace.org/code/045bcd682434...0273f990d385bb7

Добавлено через 3 минуты и 40 секунд
a, b пользовательские типы.. пользователь также должен до использования своих типов проивести регистрацию (init)..
писалась на скорую руку, чтоб передать идею..  также использовал голый ид, но можно это приукрасить, если нижно..

Добавлено через 5 минут и 44 секунды
пример - база для реализации алгоритмов copy/paste..

Добавлено через 10 минут и 54 секунды
правда для примера сериализация выбрана немножко неудачно, так как ей должен обладать по идеи любой объект, что предполагает ее простой виртуальной функцией.. но вот например рендеры, тем более что их может быть несколько,  могут иметь такой подход.. 



--------------------
PM MAIL WWW   Вверх
baldina
Дата 11.11.2011, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата

std::map<int, void(*)(object const&) > methods;

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

Добавлено через 3 минуты и 51 секунду
Цитата(mes @  11.11.2011,  15:25 Найти цитируемый пост)
 генерацию визитеров по списку типов.
 это АОП-way
PM MAIL   Вверх
mes
Дата 11.11.2011, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


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

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



Цитата(baldina @  11.11.2011,  16:08 Найти цитируемый пост)
 но это уже внеязыковые средства.

а у С++ вообще с динамикой плохо, хорошо что руки не связывает и позволяет выкрутится обходными вариантами..



--------------------
PM MAIL WWW   Вверх
mes
Дата 11.11.2011, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


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

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



Цитата(baldina @  11.11.2011,  16:08 Найти цитируемый пост)
 это АОП-way 

 ну тогда можно притянуть его и сюда 
Цитата

  serialize.reg<a> ();
  serialize.reg<b> ();

разгрузив через список типов..  smile  

где то так :
http://liveworkspace.org/code/0532d48b65fd...f0e78f2ba25ee9f

Это сообщение отредактировал(а) mes - 11.11.2011, 17:52


--------------------
PM MAIL WWW   Вверх
baldina
Дата 11.11.2011, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



azesmcar, медитирую над этим примером
Цитата(azesmcar @  10.11.2011,  17:36 Найти цитируемый пост)
if (is_rectangle) copy_rectangle();

пытаюсь понять откуда оно возникло. вот собственный пример с контекстным меню мне ясен, понятны средства его реализации. насколько это близко к вашим "нехорошим вещам", которые делаются с объектами?
PM MAIL   Вверх
azesmcar
Дата 11.11.2011, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

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



mes

Просматриваю, немного не нравиться то, что функции по идее должны быть глобально видимыми, позже попробую сгруппировать глобальные функции по классам.

Цитата(baldina @  11.11.2011,  17:47 Найти цитируемый пост)
пытаюсь понять откуда оно возникло. вот собственный пример с контекстным меню мне ясен, понятны средства его реализации. насколько это близко к вашим "нехорошим вещам", которые делаются с объектами? 


Цитата(baldina @  11.11.2011,  17:47 Найти цитируемый пост)
пытаюсь понять откуда оно возникло

не понял вопроса. что откуда возникло?
PM   Вверх
mes
Дата 11.11.2011, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


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

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



Цитата(azesmcar @  11.11.2011,  16:54 Найти цитируемый пост)
немного не нравиться то, что функции по идее 

с чего это взяли ?

Добавлено через 44 секунды
Цитата(azesmcar @  11.11.2011,  16:54 Найти цитируемый пост)
 что откуда возникло? 

не понятно что делает выражение, процитированное baldina

Добавлено через 2 минуты и 37 секунд
Цитата(azesmcar @  11.11.2011,  16:54 Найти цитируемый пост)
Просматриваю, немного не нравиться

сформулируйте требования, попробую отразить в коде smile

Добавлено через 3 минуты и 31 секунду
Цитата(azesmcar @  11.11.2011,  16:54 Найти цитируемый пост)
 что функции 

функции это вы o serialize  или o serialize_fn<T> ?

Добавлено через 4 минуты и 45 секунд
Цитата(azesmcar @  11.11.2011,  16:54 Найти цитируемый пост)
быть глобально видимыми

глобальными или глобально видимыми ? 



--------------------
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

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

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


 




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


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

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