Classes para vários tipos (templates)
Dica publicada em C/C++ / Introdução
Classes para vários tipos (templates)
Em C++ é possível criar uma classe (como uma lista ou uma
pilha) que aceite diferentes tipos. Isso é feito usando
templates. Para definir uma classe utilizando template faça assim:
template< class T> class teste { /* T será substituído pelo tipo */
public:
teste(T v) { this->valor = v; };
T valor;
void muda_valor(T v) { valor = v; };
};
main()
{
teste< int> ti(18); /* defino o tipo T na criação do objeto */
teste< char> tc('h');
string s("ola mundo");
teste< string> ts(s);
cout << ti.valor << endl;
cout << tc.valor << endl;
cout << ts.valor << endl;
ti.muda_valor(14);
tc.muda_valor('k');
s = "hello world";
ts.muda_valor(s);
cout << ti.valor << endl;
cout << tc.valor << endl;
cout << ts.valor << endl;
}
public:
teste(T v) { this->valor = v; };
T valor;
void muda_valor(T v) { valor = v; };
};
main()
{
teste< int> ti(18); /* defino o tipo T na criação do objeto */
teste< char> tc('h');
string s("ola mundo");
teste< string> ts(s);
cout << ti.valor << endl;
cout << tc.valor << endl;
cout << ts.valor << endl;
ti.muda_valor(14);
tc.muda_valor('k');
s = "hello world";
ts.muda_valor(s);
cout << ti.valor << endl;
cout << tc.valor << endl;
cout << ts.valor << endl;
}
Fazendo assim não é preciso definir uma classe diferente para cada tipo que você queira utilizar. E o tipo não se restringe aos nativos da linguagem. Qualquer classe pode ser utilizada como um tipo, desde é claro que ela possua as operações que você utiliza na sua classe.