home *** CD-ROM | disk | FTP | other *** search
/ CD Actual 13 / CDA13.ISO / cdactual / demobin / share / program / C / ANSICPP.ZIP / EX07013.CPP < prev    next >
Encoding:
C/C++ Source or Header  |  1990-07-24  |  854 b   |  43 lines

  1. // ex07013.cpp
  2. // friend classes
  3. #include <iostream.h>
  4.  
  5. class Date;        // tells compiler a Date class is coming
  6. // -------- Julian date class
  7. class Julian {
  8.     int da, yr;
  9. public:
  10.     Julian() {}
  11.     Julian(int d, int y) { da = d; yr = y;}
  12.     void display() {cout << '\n' << yr << '-' << da;}
  13.     friend Date;    // allows Date member functions to see
  14.                     // Julian private members
  15. };
  16. // ------- date class
  17. class Date {
  18.     int mo, da, yr;
  19. public:
  20.     Date(int m, int d, int y) { mo = m; da = d; yr = y; }
  21.     operator Julian();
  22. };
  23.  
  24. static int dys[] = {31,28,31,30,31,30,31,31,30,31,30,31};
  25.  
  26. // ---- member conversion function (Julian <- Date)
  27. Date::operator Julian()
  28. {
  29.     Julian jd(0, yr);
  30.     for (int i = 0; i < mo-1; i++)
  31.         jd.da += dys[i];
  32.     jd.da += da;
  33.     return jd;
  34. }
  35.  
  36. main()
  37. {
  38.     Date dt(11,17,89);
  39.     Julian jd;
  40.     jd = dt;
  41.     jd.display();
  42. }
  43.