Я пытаюсь узнать больше об итераторах в c ++, поэтому я строю держатель класса, который содержит вектор для int.Затем я построил внутренний подкласс итератора, и все прошло нормально.Тогда я подумал, что должен создать подкласс const_iterator, и, будучи новичком, я не могу понять, как заставить все вещи const работать в моем новом подклассе.
class Holder
{
public:
Holder(list<int> _mylist = list<int>()) : mylist(_mylist) {}
class iterator;
iterator begin() { return iter.begin(*this); }
class iterator
{
public:
iterator() {};
iterator begin(Holder &h) {
lit = h.mylist.begin();
return *this;
}
int operator*() { return *lit; }
iterator& operator++() { ++lit; return *this; }
private:
list<int>::iterator lit;
};
class const_iterator;
const_iterator begin() const { return citer.begin(*this); }
class const_iterator
{
public:
const_iterator() {};
const_iterator begin(const Holder &h) const {
lit = h.mylist.begin();
return *this;
}
int operator*() { return *lit; }
const_iterator& operator++() { ++lit; return *this; }
private:
list<int>::const_iterator lit;
};
private:
list<int> mylist;
iterator iter;
const_iterator citer;
};
В частности, в строке 28 "lit = h.mylist.begin ()" Я получаю ошибку " Нет оператора '=', совпадающего с этими операндами " Я знаю, что я простоЯ не понимаю магию const , но в некоторых ситуациях требуются const_iterators, и я не знаю, как это исправить.Буду признателен за любую помощь, чтобы вытащить меня из тумана.