У меня проблемы с перегрузкой метода пост-приращения.
Мой предварительный прирост в порядке.
У меня также есть пред / пост декременты, и они оба работают отлично.
Тело приращения и уменьшения должно быть одинаковым. Единственное отличие должно быть ++ / -, но я не уверен, почему мой пост не будет работать так же, как мой пост-декремент.
предварительное увеличение
upDate upDate::operator++() {
int julian = convertDateToJulian(datePtr[0], datePtr[1], datePtr[2]);
julian++;
convertDateToGregorian(julian);
return (*this);
}
после увеличения
upDate upDate::operator++(int num) {
upDate temp (*this);
int julian = convertDateToJulian(datePtr[0], datePtr[1], datePtr[2]);
julian++;
convertDateToGregorian(julian);
return temp;
}
после декрета
upDate upDate::operator--(int num) {
upDate temp(*this);
int julian = convertDateToJulian(datePtr[0], datePtr[1], datePtr[2]);
julian--;
convertDateToGregorian(julian);
return temp;
}
Это мое главное
upDate d5(11, 10, 2004);
++d5;
cout << d5 << endl;
cout << "Expected November 11, 2004\n" << endl;
//not working
upDate d6(11, 11, 2004);
d5++;
cout << d6 << endl;
cout << "Expected November 12, 2004\n" << endl;
upDate d11(12, 3, 1992);
d11--;
cout << d11 << endl;
cout << "Expected: December 2, 1992\n" << endl;
Выход:
// дата была первоначально 10 ноября 2004
// ++ прирастить
11 ноября 2004 г.
Ожидается: 11 ноября 2004 г.
// дата была первоначально 11 ноября 2004
// прирастить ++
11 ноября 2004 // выход не должен быть таким
Ожидается: 12 ноября 2004 г.
// дата была первоначально 2 декабря 1992
// decr—
1 декабря 1992 г.
Ожидается: 1 декабря 1992 г.
В твоем главном есть опечатка:
//not working
upDate d6(11, 11, 2004);
d6++; // <---- you have d5++;
cout << d6 << endl;
cout << "Expected November 12, 2004\n" << endl;
У вас есть опечатка. В этом фрагменте кода
//not working
upDate d6(11, 11, 2004);
d5++;
cout << d6 << endl;
cout << "Expected November 12, 2004\n" << endl;
Вы применили оператор пост-приращения к d5
d5++;
но считается d6
cout << d6 << endl;
d6 не изменился.
Также учтите, что правильное объявление оператора предварительного приращения
upDate & upDate::operator++();
то есть оператор должен вернуться именующий. пока ваш оператор возвращает временный объект.