Я пытаюсь сделать двунаправленные итераторы с Boost Iterator. Я реализовал некоторые функции, как предложено в документации здесь .
У меня есть родительский класс, в котором функции для реализации объявлены чисто виртуальными (мне нужны полиморфные итераторы). На данный момент у меня есть один унаследованный класс, в котором реализованы функции. Более того, я использую boost :: bidirectional_traversal_tag.
Функция dereference () реализована в унаследованном классе следующим образом:
template <typename T>
T& ImageIterator_NotPlanar<T>::dereference() const {
return *((T*)buffer);
}
для чтения значений в качестве следующего примера, он отлично работает:
for (; !iter.isEndReached(); ++iter)
cout << "ITERATOR INC: " << *iter << endl;
(где isEndReached () - личная функция). Проблема в том, что следующий код не работает:
*iter = 3;
g ++ возвращает следующую ошибку:
lvalue required as left operand of assignment
Что не так?
Спасибо