Необходимо перегрузить операцию ++ как движение по списку. В чём ошибка?
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
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
подскажите, а как мне изменить тела конструкторов классов A и B, чтобы почувствовать разницу по производительности inline и не inline функций ??? или...
нужно так чтобы data[5][5] код выводил как data(5,5) и как результат выдавал произведение ixj, те
Написал программу, которая применяет фильтр Гаусса на зашумленное одноканальное изображениеПроблема в том, что на выходе оно получается...
Имеется 3 табличкиЗадание, типы заданий (категории грубо, их может быть несколько к одному заданию) и связывающая их табличка