Вход на сайт
Abstrakter Iterator из области С++
636 просмотров
Перейти к просмотру всей ветки
в ответ ThorV 07.07.12 08:15
Задача итетатора - пройти по элементам списка.
Ну тогда уж dinamic_cast, чтобы проверить на NULL :D
В любом случае, если не хочешь иметь дело с void *, то используй структуру классов. В чем проблема?
Кроме того, шаблонами хорошо описывать алгоритмы без привязки к типам данных, однако при использовании шаблонов ты все равно должен задать тип данных. Стл-список на void * накойже валинный как и на любом другом типе данных. А если у тебя есть структура классов, то ты легко можешь реализовать итератор на этих классах БЕЗ использования шаблонов.
Я не говорю о том насколько это хорошо или плохо (зачем изобретать велосипед, когда есть стл? :D), но все таки итераторы (по своему смыслу) вполне себе могут существовать и без шаблонов.
В ответ на:
Ню ню. А как без шаблонов реализовать универсальный итератор на c++, чтоб им можно было дереференсировать любые объекты, поделись пожалуйста опытом. reinterpret_cast<MySuperPuperClass>( void* ) рулит?
Ню ню. А как без шаблонов реализовать универсальный итератор на c++, чтоб им можно было дереференсировать любые объекты, поделись пожалуйста опытом. reinterpret_cast<MySuperPuperClass>( void* ) рулит?
Ну тогда уж dinamic_cast, чтобы проверить на NULL :D
В любом случае, если не хочешь иметь дело с void *, то используй структуру классов. В чем проблема?
Кроме того, шаблонами хорошо описывать алгоритмы без привязки к типам данных, однако при использовании шаблонов ты все равно должен задать тип данных. Стл-список на void * накойже валинный как и на любом другом типе данных. А если у тебя есть структура классов, то ты легко можешь реализовать итератор на этих классах БЕЗ использования шаблонов.
Я не говорю о том насколько это хорошо или плохо (зачем изобретать велосипед, когда есть стл? :D), но все таки итераторы (по своему смыслу) вполне себе могут существовать и без шаблонов.