Задача 13: Создайте класс, который будет содержать информацию о дате (день, месяц, год). С помощью механизма перегрузки операторов, определите операцию разности двух дат (результат в виде количества дней между датами), а также операцию увеличения даты на определенное количество дней.
/*
* Created on January 12, 2011, 11:38 AM
*/
#include <cstdlib>
#include <iostream>
#include <ctime>
#include <cstdio>
using namespace std;
class myClassDate {
struct tm *initime;
time_t rawtime;
struct mydate {
int my_day;
int my_mon;
int my_year;
} myinitdate;
public:
myClassDate();//конструктор
myClassDate(const myClassDate &c){};//конструктор копирования
~myClassDate(){};//деструктор
myClassDate operator-(const myClassDate &N)
{
myClassDate temp;
temp.myinitdate.my_day=myinitdate.my_day-N.myinitdate.my_day;
//temp.dig=dig-N.dig;
return temp;
}
void printdate(){cout<<myinitdate.my_day<<myinitdate.my_mon<<myinitdate.my_year<<"\n"; };
void addday(int days);
};
myClassDate::myClassDate() {
rawtime = time (NULL);
initime = localtime (&rawtime);
myinitdate.my_day=initime->tm_mday;
myinitdate.my_mon=initime->tm_mon;
myinitdate.my_year=initime->tm_year;
}
void myClassDate::addday(int days) {
if (myinitdate.my_day+days>31) cout<<"Error! myinitdate.my_day+days>31"<<"\n";
else myinitdate.my_day+=days;
}
int main(int argc, char** argv) {
myClassDate A,B,C;
A.printdate();
A.addday(40); //Error
A.addday(5);
A.printdate();
//разность двух дат
B.printdate();
C=A-B;
C.printdate();
return (EXIT_SUCCESS);
}