/* ECP: FILEname=fig14_10.cpp */ /* 1*/ // Simple Date class. This is the interface. /* 2*/ #include /* 3*/ enum Month { Jan, Feb, Mar, Apr, May, Jun, /* 4*/ Jul, Aug, Sep, Oct, Nov, Dec }; /* 5*/ class Date /* 6*/ { /* 7*/ public: /* 8*/ enum { FirstYear = 1800 }; /* 9*/ enum { MaxYear = 2100 }; /*10*/ private: /*11*/ long int TotalDays; // Since day zero. /*12*/ static int DaysTillFirstOfMonth[ ]; /*13*/ static long int *DaysTillJan1; /*14*/ void SetJan1Array( void ); /*15*/ public: /*16*/ // Constructor. /*17*/ Date( int Y = FirstYear, int M = 0, int D = 1 ); /*18*/ // Assignment Operator. /*19*/ const Date & operator += ( long int Days ); /*20*/ // Unary Operators. /*21*/ Date operator ++ ( ); // Prefix. /*22*/ Date operator ++ ( int ); // Postfix. /*23*/ // Binary Operators . /*24*/ long int operator - ( const Date & Right ) const; /*25*/ int operator < ( const Date & Right ) const; /*26*/ // Friends for I/O. /*27*/ friend ostream & operator << /*28*/ ( ostream & Output, const Date & TheDate ); /*29*/ friend istream & operator >> /*30*/ ( istream & Input, Date & TheDate ); /*31*/ };