arraytp.h 930 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. //arraytp.h -- Array Template
  2. #ifndef ARRAYTP_H_
  3. #define ARRAYTP_H_
  4. #include <iostream>
  5. #include <cstdlib>
  6. template <class T, int n>
  7. class ArrayTP
  8. {
  9. private:
  10. T ar[n];
  11. public:
  12. ArrayTP() {};
  13. explicit ArrayTP(const T & v);
  14. virtual T & operator[](int i);
  15. virtual T operator[](int i) const;
  16. };
  17. template <class T, int n>
  18. ArrayTP<T,n>::ArrayTP(const T & v)
  19. {
  20. for (int i = 0; i < n; i++)
  21. ar[i] = v;
  22. }
  23. template <class T, int n>
  24. T & ArrayTP<T,n>::operator[](int i)
  25. {
  26. if (i < 0 || i >= n)
  27. {
  28. std::cerr << "Error in array limits: " << i
  29. << " is out of range\n";
  30. std::exit(EXIT_FAILURE);
  31. }
  32. return ar[i];
  33. }
  34. template <class T, int n>
  35. T ArrayTP<T,n>::operator[](int i) const
  36. {
  37. if (i < 0 || i >= n)
  38. {
  39. std::cerr << "Error in array limits: " << i
  40. << " is out of range\n";
  41. std::exit(EXIT_FAILURE);
  42. }
  43. return ar[i];
  44. }
  45. #endif