2014-10-09 6 views
0

У меня есть четыре класса, два из них итераторов:Как меняются разные итераторы сост.

LinkedList<T> -- holds the pointer to dummy node 
LinkedListNode<T> -- Node with next and previous pointers and data T 
LinkedListIterator<T> -- holds a pointer to LinkedListNode 
LinkedListConstIterator<T> -- holds a pointer to LinkedListNode 

Они оба только нужно реализовать вперед функциональность итератора.

Как бы функции в моем итераторе const были разными в этом случае? Означает ли это, что когда я возвращаю указатель или что-либо пользователю, я должен сделать его const?

+0

В идеале ваш 'LinkedListConstIterator' будет содержать свои указатели как нечто вроде' const LinkedListNode * ', так что решение относительно типа возврата еще более очевидно: вариант «const» просматривает представление const для базовых узлов и значений - если вы не хотите разрешить редактирование структуры списка (например, удаление элемента, указывающего на с помощью константного итератора), и в этом случае вам нужно пройти через не-const-представление узлов, возможно, как «LinkedListNode *». – seh

ответ

0

Посмотрите, как const_iterators работает для любого контейнера STL (пример: std::list). Если вы ищете, чтобы ваши классы итераторов работали аналогично, тогда да, вы должны вернуть ссылку на значение const, то есть const T&

Смежные вопросы