我尝试使用 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
怎么了 ?
谢谢