Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

[C++] Иерархия функторов

21.11.06 00:58
Re: [C++] Иерархия функторов
 
rahimov80 завсегдатай
в ответ Simple 20.11.06 20:20
Ну и замечательно.
Теперь подведем итог, согласно вашей постановке задачи:
В ответ на:
Элементы массива преобразовываются в элементы некоего документа. Операция преобразования может отличаться для разных типов документов и состояния конкретного элемента массива.

1. Если "состояния конкретного элемента массива" можно передать через полиморфизм (т.е. иерархия и т.д.), а тип документа предположим только один, то вариант "Murr/voxel3d": коллекция с ссылками на базовый класс, а функтор не требует полиморфизма, так как определяет документ, который только один.
2. Если "состояния конкретного элемента массива" не требует полиморфизм (может вы имеете в виду разный state в стате-машине внутри элемента ), а разные типы документов определяются через полиморфизм, то вы можете использовать for_each и передавать функтор (определяющий документ) через ссылку.
3. Если вам требуется полиморфизм и для элементов в массиве и для документов, то необходимо воспользоватся паттерном Визитор, как совершенно справедливо заметил scorpi_, так как "double dispatch"!
Ну что,всех примерил?
 

Перейти на