Здравствуйте, Alxndr, Вы писали:
_>>Передавая таким образом this как указатель на конкретного наследника
_>>5) а в функциях process(...) менеджер может творить всё что угодно, ориентируясь на известные ему интерфейсы наследников game_object'a
A>Вот здесь корень зла: объект может быть как drawable, так и serializable.
Тебе нужно определится, что для тебя важнее:
1. Высокая скорость прохода по объектам
2. Расширяемая функциональность и независимость от реализации базовых классов.
Если первое — то виртуальные функции и "жирный" интерфейс, если второе — то тут несколько вариантов:
а. Интерфейсы, раелизующие вызов функции по её классу.
б. Самый банальный способ — множественное (+виртуальное) наследование и dynamic_cast.
в. Способ "наращивания" возможностей (аля VCL) — в нкаждом новом производном классе наращивается какая-нибудь функциональность. Название класса соответствует функциональности.
И ещё замечание: откуда такое требование — хранить всё объекты в одном контейнере. Ихмо — все проблемы из-за него.
PS: если возникают вопросы, требующие нетревиальных решений, это означает, что что-то неправильно спроектировали.
... << RSDN@Home 1.1.2 stable >>