Прямо сейчас ваш plus
возвращает void
, или ничего! Так что вы не можете сделать t1.plus(kw).plus(20);
. Если вы хотите, вам нужно, чтобы ваш .plus()
возвратил Time
:
class Time {
public:
Time &plus(Time t);
Time &plus(int x);
...
};
Я пошел дальше и заставил его возвращать Time
по ссылке, чтобы при цепочке функции, такой как вы, следующий plus
все равно изменял исходный объект, для которого был вызван первый plus
! Мы можем сделать это, если вы реализуете функции plus
, такие как:
Time &Time::plus(Time t) {
min += t.min;
if (min > 59) {
hour++;
min = min - 60;
}
return *this; //return ourselves so that the next func will be called on us too!
}
Time &Time::plus(int x) {
min += x;
if (min > 59) {
hour++;
min = min - 60;
}
return *this; //return ourselves so that the next func will be called on us too!
}