Необходимо перегрузить операцию ++ как движение по списку. В чём ошибка?
template <class M>
Node<M>* operator ++ (Node<M> &p)
{
p = p->next;
return p;
}
int main()
{
Node<int>* pbeg = first(15);
Node<int>* pend = pbeg;
add(&pend, 2);
add(&pend, 3);
Node<int>* pv = pbeg;
cout << pv->data << '\t';
++pv;
cout << pv->data << '\t';
Перегрузить таким образом этот оператор как вы хотите не получится, т.к придется писать
Node* operator++()
{
this = next;
return next;
}
а это не верно. this это prvalue (9.3.2)стандарта и ему нельзя ничего присваивать. Подробнее про prvalue можно прочитать здесь.
А если нужно сделать объект который бы указывал на ваш Node<M> и для которого был бы переопределен оператор ++, то нужно сделать отдельный класс для этого, как это сделано в стандартной библиотеке С++, там есть std::iterator
Продвижение своими сайтами как стратегия роста и независимости