![]() |
|
Модераторы: Daevaorn Страницы: (11) Все « Первая ... 3 4 [5] 6 7 ... Последняя »
( Перейти к первому непрочитанному сообщению ) |
![]()
|
|
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 32 Всего: 101 |
||||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
Если в ваш пример с сериализатором переписать так, чтобы можно было его использовать не только с сериализатором, но и с перемещением, вращением, перекрашиванием и др. визиторами (но избавившись от getId() ) - получится примерно то, что было в журнале "Мир ПК"
|
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
подкорректируем задачу..
есть команда print и есть несколько групп объект ов разных производителей.. задача: 1. позволить динамическое подключение каждой групы объектов 2. избежать зависимость между группами 3. внутри группы позволить использовать средства контроля типов Это сообщение отредактировал(а) mes - 11.11.2011, 22:05 |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
вот решение с комбинацией различных подходов :
http://liveworkspace.org/code/6148d7bc1a09...f9f74430ebd53c4 неймспайсы условно предствавляют модули разных производителей нужно подумать как сделать более благородные средства регистрации.. |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
немного изменил завязку (регистрацию), пододвинув ее в сторону си идеологии :
http://liveworkspace.org/code/c76143b44b1e...126584d06c5f01f Это сообщение отредактировал(а) mes - 11.11.2011, 23:13 |
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
уже лучше - регистрировать нужно не отдельные классы, а модули.
|
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
отличная идея! правда для моей задачи ;) |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
math64, какую задачу озвучил, ту и решал а регистрятся, кстати, не классы, а колбяк-функции Это сообщение отредактировал(а) mes - 11.11.2011, 23:55 |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
mes
Из дома сложновато бывает засесть за компьютер, попробую сегодня посмотреть и отписаться. Спасибо за старания. |
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
но раньше нужно было регистрировать по одному callback'у на функцию, теперь - на модуль. Внутри модуля используется обычный Vsitor. А задача была поставлена немного не такая. Регистрацию пожно проводить примерно так (не тестировал, могут быть ошибки):
|
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
вот пример того, о чем я говорил изначально : http://liveworkspace.org/code/e04fcdd67b04...047a56795ec837a или так : http://liveworkspace.org/code/ff77f7b542c5...9f12ab7392a4504 Это сообщение отредактировал(а) mes - 12.11.2011, 16:26 |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
math64, основная идея примеров, это разбиение действий на методы..
это позволяет для каждой группы объектов иметь свой метод, что в свою очередь позволяет легко подключать/отключать нужную группу, что позволяет группе разработчиков предоставлять полноценный метод для работы с группой, а пользователю выбирать какие методы использовать в действии.. Это сообщение отредактировал(а) mes - 12.11.2011, 15:46 |
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
mes, Ваш пример делает одно действие - print - причём только в cout.
Мой пример (он - модификация Вашего примера, и в нём есть ошибки, но их можно исправить) позволяет делать несколько действий с группой объектов. Подключать/отключать группу ещё проще - не нужен init(), регистрация происходит автоматически при подключения модуля к проекту. |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
может потому что акцент (моей) задачи стоял не нем ? а пока что смотрю, что получается в каком случае.. и жду более подробного освещения проблем от тс.. тот пример лишь был показательным эксперементом для group_id и не очень оправдавшим себя.. сейчас я склоняюсь к другому уточню, я на ините и не настаивал.. Это сообщение отредактировал(а) mes - 12.11.2011, 19:54 |
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
Вот есть ещё такая идея (незавершённая) - в class Visitor новые методы не добавить, а в namespace - можно
Регистрация состоит в том, чтобы обеспечить включение всех нужных заголовков. |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |