1
0

pairs.cpp 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. // pairs.cpp -- defining and using a Pair template
  2. #include <iostream>
  3. #include <string>
  4. template <class T1, class T2>
  5. class Pair
  6. {
  7. private:
  8. T1 a;
  9. T2 b;
  10. public:
  11. T1 & first();
  12. T2 & second();
  13. T1 first() const { return a; }
  14. T2 second() const { return b; }
  15. Pair(const T1 & aval, const T2 & bval) : a(aval), b(bval) { }
  16. Pair() {}
  17. };
  18. template<class T1, class T2>
  19. T1 & Pair<T1,T2>::first()
  20. {
  21. return a;
  22. }
  23. template<class T1, class T2>
  24. T2 & Pair<T1,T2>::second()
  25. {
  26. return b;
  27. }
  28. int main()
  29. {
  30. using std::cout;
  31. using std::endl;
  32. using std::string;
  33. Pair<string, int> ratings[4] =
  34. {
  35. Pair<string, int>("The Purpled Duck", 5),
  36. Pair<string, int>("Jaquie's Frisco Al Fresco", 4),
  37. Pair<string, int>("Cafe Souffle", 5),
  38. Pair<string, int>("Bertie's Eats", 3)
  39. };
  40. int joints = sizeof(ratings) / sizeof (Pair<string, int>);
  41. cout << "Rating:\t Eatery\n";
  42. for (int i = 0; i < joints; i++)
  43. cout << ratings[i].second() << ":\t "
  44. << ratings[i].first() << endl;
  45. cout << "Oops! Revised rating:\n";
  46. ratings[3].first() = "Bertie's Fab Eats";
  47. ratings[3].second() = 6;
  48. cout << ratings[3].second() << ":\t "
  49. << ratings[3].first() << endl;
  50. // std::cin.get();
  51. return 0;
  52. }