// F_Tabla.cpp: ejemplo de función de plantilla para
// Tabla para enteros:
// C con Clase: Marzo de 2002
#include <iostream>
#include "Tabla.h"
using namespace std;
const int nElementos = 5;
void Incrementa(Tabla<int> &t); // (1)
int main() {
Tabla<int> TablaInt(nElementos);
Tabla<char> TablaChar(nElementos);
for(int i = 0; i < nElementos; i++) {
TablaInt[i] = 0;
TablaChar[i] = 0;
}
Incrementa(TablaInt);
// Incrementa(TablaChar); // <-- Ilegal (2)
for(int i = 0; i < nElementos; i++)
cout << "TablaInt[" << i << "] = "
<< TablaInt[i] << endl;
return 0;
}
void Incrementa(Tabla<int> &t) { // (3)
for(int i = 0; i < t.NElementos(); i++)
t[i]++;
}
// Tabla.h: definición de la plantilla tabla:
// C con Clase: Marzo de 2002
#ifndef T_TABLA
#define T_TABLA
template <class T>
class Tabla {
public:
Tabla(int nElem);
~Tabla();
T& operator[](int indice) { return pT[indice]; }
int NElementos() const { return nElementos; }
private:
T *pT;
int nElementos;
};
// Definición:
template <class T>
Tabla<T>::Tabla(int nElem) : nElementos(nElem) {
pT = new T[nElementos];
}
template <class T>
Tabla<T>::~Tabla() {
delete[] pT;
}
#endif