我对以下代码的行为感到困惑。
我有一个带矢量成员的虚拟类。我也想要一个迭代器成员,所以我可以在各种方法中访问向量,而不必每次都声明一个新的。在介绍const方法之前似乎没问题。
test1方法使用vector和迭代器成员就好了。
当我尝试将const_iterator成员与向量一起使用时,test2方法抛出编译错误。但是,如果我在方法中声明一个新的const_iterator,它就会编译。
有人可以解释一下这种行为。
由于
class dummy {
public:
std::vector<double> data;
// Declare iterators as members
std::vector<double>::iterator iterator1;
std::vector<double>::const_iterator const_iterator1;
void test1(){
iterator1 = data.begin();
}
void test2() const {
// const_iterator1 = data.begin(); // Fails
std::vector<double>::const_iterator const_iterator2 = data.begin(); // Compiles
}
};
答案 0 :(得分:4)
您无法在const
函数中更改成员变量的值。
const_iterator1 = data.begin(); // Changes the value of const_iterator1 member variable