Другие ответы уже объясняли, почему то, что Вы делаете, не работает, но я предполагаю, что Вы хотите определить типичный operator+
для итератора, но потерялись в этой попытке.
Как указатели, так и стандартные итераторы произвольного доступа позволяют продвигать указатель или итератор на целое значение. В случае итераторов определяется operator+
, который принимает целое значение в качестве аргумента и возвращает итератор.
LINT_rep::Iterator LINT_rep::Iterator::operator+(int distance) const;
Вы можете определить такой оператор как метод, но этот метод позволит Вам написать
iterator + distance
но не
distance + iterator
Чтобы сделать сложение коммутативным Вы должны определить функцию, не являющуюся другом, которая принимает расстояние в качестве первого параметра, и объект итератора в качестве второго
friend LINT_rep::Iterator LINT_rep::Iterator::operator+(int distance, const LINT_rep::Iterator & rhs);