0
我有一個包含重載幾個操作員功能操作員常迭代
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
類型的以下方法的恆定iterator類重載。
我的編譯器抱怨說我正在嘗試修改一個常量對象(更具體地說,「錯誤C2166:l值指定常量對象」),我知道它;然而,我沒有看到重載這些函數的其他方式。有人可以詳細說明如何去寫這些重載而不會導致編譯器問題嗎?
你爲什麼要做'index''const'? – 0x499602D2 2014-11-24 23:22:53
我相信'++ * index'中的代碼有一個錯字 - int沒有一個*。爲什麼索引是一個const int?常量迭代器不應該允許非const訪問容器的數據。但是迭代器本身是可變的(它必須能夠迭代)。 – 2014-11-24 23:22:54
我現在可以看到這個錯誤,我從我之前寫過的迭代器中複製了這段代碼,它迭代了一個鏈表而不是一個數組。我將索引類型更改爲「int」,並解決了錯誤 – Kevin 2014-11-24 23:33:47