#include <iostream>
#include <cstdlib>
using namespace std;
template <class T=int, int size=10> class MyClass {
T a[size]; // size of array is passed in size
public:
MyClass() {
register int i;
for(i=0; i<size; i++) a[i] = i;
}
T &operator[](int i);
};
template <class T, int size>
T &MyClass<T, size>::operator[](int i)
{
if(i<0 || i> size-1) {
cout << "\nIndex value of ";
cout << i << " is out-of-bounds.\n";
exit(1);
}
return a[i];
}
int main()
{
MyClass<int, 100> intarray;
MyClass<double> doublearray;
MyClass<> defarray;
cout << "int array: ";
for(int i=0; i<100; i++) intarray[i] = i;
for(int i=0; i<100; i++) cout << intarray[i] << endl;
cout << "double array: ";
for(int i=0; i<10; i++) doublearray[i] = (double) i/3;
for(int i=0; i<10; i++) cout << doublearray[i] << endl;
cout << "defarray array: ";
for(int i=0; i<10; i++) defarray[i] = i;
for(int i=0; i<10; i++) cout << defarray[i] << endl;
return 0;
}
|