const_iterator(Node* curr, DList* theList)
принимает не- const
DList *
, но вызывается с
return const_iterator(front_, this);
из const
метода
const_iterator cbegin() const
this
вconst
метод равен const
, поэтому здесь this
является const DList *
и не может использоваться в качестве аргумента для параметра, ожидающего не const
DList *
.
Тривиальное решениедолжен заменить
const_iterator(Node* curr, DList* theList)
{
curr_ = curr;
myList_ = theList;
}
на
const_iterator(Node* curr, const DList* theList):
curr_(curr),
myList_ (theList) // using member initializer list for reasons of taste
{
}
и следовать правильности const
до конца, если это возможно. Например, элемент
DList* myList_;
должен стать
const DList* myList_;
, или вы только что переместили сообщение об ошибке. В других функциях-членах, которые в настоящее время не полностью реализованы в вопросе, могут потребоваться изменения.
Мне кажется, это должно быть возможно.