【发布时间】:2014-02-02 14:47:48
【问题描述】:
我对以下代码的行为感到困惑。
我有一个带有向量成员的虚拟类。我还想要一个迭代器成员,这样我就可以在各种方法中访问向量,而不必每次都声明一个新的。在我引入 const 方法之前似乎还可以。
test1 方法使用向量和迭代器成员就好了。
当我尝试将 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
}
};
【问题讨论】: