52 lines
981 B
C++
52 lines
981 B
C++
//arraytp.h -- Array Template
|
|
#ifndef ARRAYTP_H_
|
|
#define ARRAYTP_H_
|
|
|
|
#include <iostream>
|
|
#include <cstdlib>
|
|
|
|
template <class T, int n>
|
|
class ArrayTP
|
|
{
|
|
private:
|
|
T ar[n];
|
|
public:
|
|
ArrayTP() {};
|
|
explicit ArrayTP(const T & v);
|
|
virtual T & operator[](int i);
|
|
virtual T operator[](int i) const;
|
|
};
|
|
|
|
template <class T, int n>
|
|
ArrayTP<T,n>::ArrayTP(const T & v)
|
|
{
|
|
for (int i = 0; i < n; i++)
|
|
ar[i] = v;
|
|
}
|
|
|
|
template <class T, int n>
|
|
T & ArrayTP<T,n>::operator[](int i)
|
|
{
|
|
if (i < 0 || i >= n)
|
|
{
|
|
std::cerr << "Error in array limits: " << i
|
|
<< " is out of range\n";
|
|
std::exit(EXIT_FAILURE);
|
|
}
|
|
return ar[i];
|
|
}
|
|
|
|
template <class T, int n>
|
|
T ArrayTP<T,n>::operator[](int i) const
|
|
{
|
|
if (i < 0 || i >= n)
|
|
{
|
|
std::cerr << "Error in array limits: " << i
|
|
<< " is out of range\n";
|
|
std::exit(EXIT_FAILURE);
|
|
}
|
|
return ar[i];
|
|
}
|
|
|
|
#endif
|