Я не знаю, почему приведенный ниже код не удалось скомпилировать с ошибкой:
"экземпляр экземпляра" cb :: iterator :: iterator "не соответствует типам аргументов списка аргументов: (int, const cb) "
Но код прекрасно компилируется, когда я раскомментирую вторую версию конструктора!почему компилятор считает *this
константой?
class cb
{
public:
class iterator
{
public:
iterator(int x, cb& c):cb_(c) { x_ = x; }
//iterator(int x, const cb& c) :cb_(c) { x_ = x; }
private:
int x_;
//cb a;
const cb& cb_;
};
iterator begin() const;
};
cb::iterator cb::begin() const
{
return iterator(1, *this);
}