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

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