Larback - Retornando conhecimento

Eu não programo usando o mouse

Classes genéricas

/* Uma característica poderosa do C++ é a possibilidade de declarar classes genéricas usando-se oarametros de tipos nas declarações de classes. Imagine que precisamos de uma classe com um vetor para armazenar alguns itens, poderíamos declará-la como:
	class ValoresInteiros {
	public:
		int vetor[100];
};
No entanto, essa nossa classe pode armazenar apenas números inteiros. Se necessitarmos das mesmas funcionalidades mas para um tipo de dados real, teríamos que escrever uma nova classe:
	class ValoresReais {
	public:
		float vetor[100];
};
Para cada tipo de dados que nossa classe fosse armazenar, teríamos que escrever uma nova declaração. Para resolver isso, o C++ nos permite declarar uma classe assim:
	template<class tipoGenerico>
	class Valores {
	public:
		tipoGenerico vetor[100];
};
Mais tarde, na criação do objeto inicializaremos o tipoGenerico
	Valores[int> intObjeto;
	Valores<float> floatObjeto;
Sei que vocês já entenderam, mas segue um exemplo completo:
#include <iostream>
using namespace std;
template <class generico>
class Valores {
	public:
		generico vetor[100];
};

int main() {
	Valores<int> vInt;
	Valores<float> vFloat;
	
	vInt.vetor[0] = 101;
	vInt.vetor[1] = 102;
	
	vFloat.vetor[0] = 3.59;
	vFloat.vetor[1] = 7.47;
	return 0;
}
Bons estudos.