Перегрузил операцию инкремента специально для своего класса, но возникла проблема: если написать my_class++ то код не работает, зато при ++my_class все выполняется правильно.
my_class &operator++(my_class &in)
{
}
Вы перегрузили оператор преинкремента, он обычно выглядит так:
my_class& operator++(my_class &in)
{
// какие-то инкрементирующие действия
return in;
}
Этот оператор вызвается кодом:
my_class A;
++A;
Оператор постинкремента имеет вид:
my_class operator++(my_class &in, int dummy)
{
my_class tmp = in;
// Какие-то инкрементирующие действия
return tmp;
}
Этот оператор вызвается кодом:
my_class A;
A++;
Обратите внимание на следующее:
1) Сигнатура оператора постинкремента имеет фиктивный аргумент int
2) Преинкремент возвращает ссылку на класс, который получился после инкрементирования
3) Постинкремент перед изменением in сохраняет его в временную переменную, чтобы потом вернуть его "до изменения" (и возвращает не ссылку, а копию).
Сборка персонального компьютера от Artline: умный выбор для современных пользователей