// Fichero de prueba: prueba.cpp
#include <iostream>
#include "prueba.h"
using namespace std;
// Esto es necesario para que exista
// una instancia de la variable:
template <class T> int Ejemplo<T>::estatico; // (2)
int main() {
Ejemplo<int> EjemploInt1(10);
cout << "Ejemplo<int>: " << EjemploInt1.LeeEstatico()
<< endl; // (3)
Ejemplo<char> EjemploChar1('g');
cout << "Ejemplo<char>: "
<< EjemploChar1.LeeEstatico() << endl; // (4)
Ejemplo<int> EjemploInt2(20);
cout << "Ejemplo<int>: "
<< EjemploInt1.LeeEstatico() << endl; // (5)
Ejemplo<float> EjemploFloat1(32.12);
cout << "Ejemplo<float>: "
<< Ejemplo<float>::LeeEstatico() << endl; // (6)
Ejemplo<int> EjemploInt3(30);
cout << "Ejemplo<int>: "
<< EjemploInt1.LeeEstatico() << endl; // (7)
return 0;
}
// Fichero de cabecera: prueba.h
#ifndef T_PRUEBA
#define T_PRUEBA
template <class T>
class Ejemplo {
public:
Ejemplo(T obj) {objeto = obj; estatico++;}
~Ejemplo() {estatico--;}
static int LeeEstatico() {return estatico;}
private:
static int estatico; // (1)
T objeto; // Justificamos el uso de la plantilla :-)
};
#endif