Перегрузка оператора предварительного увеличения - PullRequest
2 голосов
/ 03 мая 2020

Вот объявление:

 Iterator operator++();//pre-increment

Вот определение:

LinkedList::Iterator& LinkedList::Iterator::operator++(){
   return Iterator(current->next);//this is giving me an error
}

Вот как выглядит класс

class LinkedList{
public:
    Node struct{
      /*contains pointer to next node and an integer value*/
      int val;
      Node* next;
    };
    class Iterator{
    public:
      Iterator& operator++();//pre-increment
    protected:
      Node* current;//points to current node
    }
} 

1 Ответ

3 голосов
/ 03 мая 2020

Вы создаете новый объект итератора и (пытаетесь) вернуть ссылку на него.

Оператор приращения префикса изменяет this объект, и должен вернуть ссылку на себя:

current = current->next;  // TODO: Add checking for not going out of bounds or dereferencing a null pointer
return *this;
...