Curso de plantillas en C++: uso en funciones
By laparca
Antes de continuar con las funciones quedó pendiente la sintaxis de las plantillas:
Bueno, creo que está claro: se usa la palabra reservada <strong>template</strong>
y entre brakets (los simbolitos ‘<
‘ y ‘>
‘) se pone la lista de cosas que queremos que se puedan hacer plantilla. Finalmente va la parte sobre la que vamos a aplicar la plantilla, que puede ser una estructura o unión, una clase, una función, un renombrado de tipo con using
(a partir del estándar de 2011) o una declaración de variable (a partir del estándar de 2014).
Y con esto se termina esta breve explicación. El resto lo iremos viendo con ejemplos.
Ahora sí: Funciones
En el momento en el que podemos tener tipos como plantillas surge el problema de poder usarlos en funciones. En este punto la lógica es sencilla, si tengo que pasar a una función un tipo que es una plantilla, la función también debe ser una plantilla.
De este modo, desde una_funcion tendríamos acceso a todas las funciones miembro y variables miembro de mi_tipo
. A partir de aquí lo usaríamos de forma normal como cualquier otra variable.
Hay otra forma de crear la plantilla para que acepte cualquier cosa:
Con este código, otra_funcion
acepta cualquier tipo de dato. Si intentamos acceder a alguna variable miembro o función miembro de valor el compilador dará error si no está implementada en el tipo T
.
Un ejemplo práctico
Hasta ahora hemos visto un poco por encima cómo hacer plantillas sencillas, pero toca ver algo que tenga alguna utilidad. Por eso vamos hacer una clase que implemente un array que pueda devolver su tamaño con una función (como en java).
Actualmente ya existe una clase que hace eso en el estándar. Es std::array.
En las siguientes entregas profundizaremos más en lo que se puede hacer con las plantillas.