home *** CD-ROM | disk | FTP | other *** search
/ Using Visual C++ 4 (Special Edition) / Using_Visual_C_4_Special_Edition_QUE_1996.iso / ch14 / addeq3.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1995-09-18  |  822 b   |  36 lines

  1. #include <iostream.h>
  2. #include <stdio.h>
  3. #include <string.h>
  4.  
  5. template <class T>
  6. unsigned int AddEquals(T val1, T val2, T compare)
  7. {
  8.     return (val1 + val2) == compare;
  9. }
  10.  
  11. // Specialization for character pointers
  12. unsigned int AddEquals(char *val1,
  13.                        char *val2,
  14.                        char *compare)
  15. {
  16.     char Temp[512];
  17.     sprintf(Temp, "%s%s", val1, val2);
  18.     return !strcmp(Temp, compare);
  19. }
  20.  
  21. void main()
  22. {
  23.     // Legal - Uses template
  24.     cout << "Does 4 + 5 = 9? ";
  25.     cout << (AddEquals(4, 5, 9) ? "Yes" : "No") << "\n";
  26.  
  27.     // Legal - Uses template
  28.     cout << "Does 7.0 + 5.5 = 12.0? ";
  29.     cout << (AddEquals(7.0, 5.5, 12.0) ? "Yes" : "No") << "\n";
  30.  
  31.     // Legal - Uses specialization
  32.     cout << "Does \"Big \" + \"Dog\" = \"Big Dog\"? ";
  33.     cout << (AddEquals("Big ", "Dog", "Big Dog") ? "Yes" : "No")
  34.          << "\n";
  35. }
  36.