【发布时间】:2011-09-26 20:14:06
【问题描述】:
我尝试使用 Boost Iterator 制作双向迭代器。我已经按照文档here 中的建议实现了一些功能。
我有一个父类,其中要实现的函数被声明为纯虚拟(我需要多态迭代器)。目前,我有一个实现功能的继承类。此外,我使用 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
怎么了?
谢谢
【问题讨论】:
-
该错误可能意味着您在从
iterator_facade派生时传递了不正确的Value或Reference模板。很遗憾您没有发布完整的迭代器定义,因为错误可能很明显。
标签: c++ boost iterator boost-iterators