使用常量迭代器重载运算符

时间:2014-11-24 23:16:24

标签: c++ iterator

我有一个常量迭代器类,它包含以下重载多个操作符函数的方法

self_reference operator=( const SDAL_Const_Iter& src ) {
    index = src.index;
    return *this;
}

self_reference operator++() {
    index = index + 1;
    return *this;
}

self_type operator++(int) {
    SDAL_Const_Iter results = *this;
    ++index;
    return results;
}

index变量的类型为const int

我的编译器抱怨我试图修改一个常量对象(更具体地说,“错误C2166:l值指定常量对象”),我知道;但是,我认为没有其他方法可以重载这些功能。有人可以详细说明如何在不引起编译器问题的情况下编写这些重载吗?

1 个答案:

答案 0 :(得分:1)

我认为问题出在const int index变量中。

常量迭代器不应允许非const访问容器的数据。但是,迭代器本身是可变的(它必须能够迭代)。将index更改为int可以解决问题。