Pontificia Universidad Javeriana Departamento de Ingeniería de Sistemas Programación de Computadores Introducción a plantillas, 2016-30 El uso de plantillas permite que en la definición de Tipos Abstractos de Datos se utilice un tipo de dato genérico, y luego al momento de usar esos TADs se identifica cuál tipo de dato particular se requiere usar. Considere la definición de la siguiente estructura: struct calc { int x; int y; int multiply(); int add(); }; // implementacion operacion multiplicar int calc::multiply() { return x*y; } // implementacion operacion sumar int calc::add() { return x+y; } Esta estructura, tal y como está definida, sólo puede operar con números enteros. El siguiente fragmento de código muestra cómo se podría hacer uso de esta clase en el procedimiento principal: calc objeto; objeto.x = 3; objeto.y = 2; int c = objeto.add(); int d = objeto.multiply(); Para generalizar su definición, y así permitir que opere con diferentes tipos de datos (como reales), se le agrega la definición de plantilla, así: template <class T> struct calc { T x; T y; T multiply(); T add(); }; // implementacion operacion multiplicar template <class T> T calc<T>::multiply() { return x*y; } // implementacion operacion sumar template <class T> T calc<T>::add() { return x+y; } Justo antes de la definición de cada clase y función, se incluye la palabra reservada template y el nombre del tipo de dato genérico que se va a utilizar (en este caso, T). Luego, dentro de cada dato y función, se utiliza el tipo de dato genérico para indicar las operaciones. El siguiente fragmento de código muestra entonces cómo se puede hacer uso de la nueva estructura genérica dentro del procedimiento principal: calc<int> objetoI; objetoI.x = 3; objetoI.y = 2; int c = objetoI.add(); int d = objetoI.multiply(); calc<float> objetoF; objetoF.x = 3.5; objetoF.y = 5.2; float z = objetoF.add(); float w = objetoF.multiply();