В C ++ нельзя передавать параметры как переменные-члены класса.В
void calculate(int birth.day, ...
birth.day
недопустимо.
Однако можно передать весь класс и затем использовать переменные-члены.
Изменить
void calculate(int,int,int,int,int,int);
в
void calculate(date, date);
, а затем
calculate (birth.day,birth.month,birth.year,current.day,current.month,current.year);
в
calculate(birth, current);
и, наконец,
void calculate(int birth.day,int birth.month,int birth.year,int current.day,int current.month,int current.year)
в
void calculate(date birth, date current)
Есть несколько способов улучшить это, передавая ссылку
void calculate(const date & birth, date current)
(обратите внимание, что current
не является ссылкой, поскольку она будет изменена в функции) и очисткупару опечаток в calculate
current.day=current.day=monthdays[birth.month-1];
должно быть
current.day=current.day+monthdays[birth.month-1];
или
current.day+=monthdays[birth.month-1];
и
int calculated_date=current.date-birth.date;
больше похоже на
int calculated_day=current.day-birth.day;
Компилятор поймает вторую опечатку, но, вероятно, не первую.Я также не продал логику, используемую в calculate
, но, к счастью, TurboC ++ поставлялся с Turbo Debugger, одним из лучших доступных на тот момент отладчиков, и, на мой взгляд, он все еще хорошо работает.