Boost双向迭代器问题不可写

时间:2011-07-01 15:05:52

标签: c++ boost iterator boost-iterators

我尝试使用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

有什么问题?

由于

1 个答案:

答案 0 :(得分:0)

我们需要看到完全生成错误的位置。此外,我们必须假设您有正确的非const版本

可能是你需要

template <typename T>
T& ImageIterator_NotPlanar<T>::dereference() {
  return *((T*)buffer);
}

template <typename T>
T const& ImageIterator_NotPlanar<T>::dereference() const {
  return *((T*)buffer);
}