Boost双向迭代器不可写的问题

Problem with Boost bidirectionnal iterator not writable

本文关键字:问题 迭代器 Boost      更新时间:2023-10-16

我尝试用Boost迭代器制作双向迭代器。我已经实现了此处文档中建议的一些功能。

我有一个父类,其中要实现的函数被声明为纯虚拟的(我需要多态迭代器(。目前,我有一个继承的类,其中实现了函数。此外,我使用boost::bidirectional_transversal_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

怎么了?

感谢

我们需要准确地查看错误产生的位置。此外,我们必须假设您有合适的非常量版本

你需要吗

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