template class with type parameter
#include <iostream> #include <stdlib.h> using namespace std; const int SIZE = 10; template <class T> class MyClass { T a[SIZE]; public: MyClass(void) { int i; for(i=0; i<SIZE; i++) a[i] = i; } T &operator[](int i); }; template <class T> T &MyClass<T>::operator[](int i) { if(i<0 || i> SIZE-1) { cout << endl << "Index value of "; cout << i << " is out of bounds." << endl; } return a[i]; } int main(void) { MyClass<int> int_array; MyClass<double> double_array; int i; cout << "Integer array: "; for(i=0; i<SIZE; i++) int_array[i] = i; for(i=0; i<SIZE; i++) cout << int_array[i] << " "; cout << endl; cout << "Double array: "; cout.precision(2); for(i=0; i<SIZE; i++) double_array[i] = (double)i/3; for(i=0; i<SIZE; i++) cout << double_array[i] << " "; cout << endl; int_array[12] = 100; // Calls overloaded array operator }