[英]std::vector iterator as a class member
以下代碼的行為令我感到困惑。
我有一個帶有向量成員的虛擬類。 我也想要一個迭代器成員,這樣我就可以通過各種方法訪問向量,而不必每次都聲明一個新的向量。 在介紹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
}
};
您不能在const
函數中更改成員變量的值。
const_iterator1 = data.begin(); // Changes the value of const_iterator1 member variable
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.