PLANTILLAS. Un problema con el que nos podemos encontrar es que tengamos dos clases que hacen uso de los mismos métodos pero estos están aplicados a distintos tipos de datos. Por ejemplo, listas con enteros, listas con cadenas, etc.
Para solucionar esto, existen varias opciones:
- Que la clase almacene todos sus datos como punteros a void realizando moldeados (castings) en las operaciones
- Que todos los objetos que vayan a usar esa clase se creen a partir de una misma base
- Usar plantillas. (Sí, así de simple).
Plantillas de Funciones
Con esto, lo que vamos a hacer es permitir al compilador ir creando las funciones apropiadas dependiendo de los parámetros utilizados.
La sintaxis es:
template <class X,class Y,.....>
tipo_resultado función(parámetros)
.
.
.
.
Con la palabra template estamos indicando al compilador que estamos creando una función general (una plantilla). A partir de ella, dicho template deberá posteriormente ir creando las funciones adecuadas.
Los identificadores X e Y representan dos clases con las que al usar la función se debe instanciar la plantilla de C++. Al mismo tiempo, pueden usarse para indicar el tipo del valor devuelto, el tipo de los parámetros que recibe la función o para declarar variables dentro de ella.
Plantillas de Clases
Lo que diferencia una plantilla de clase de una plantilla de función es que en lugar de tener la definición de una función detrás de template y los argumentos, vamos a tener la definición de una clase.
A la hora de implementar los métodos de la clase, es obligatorio encabezar cada método de la misma forma que la clase, con la palabra template y los parámetros adecuados.
Aprende más sobre informática desde aquí. Si gustas, puedes acceder a otras fuentes.