2010
07.07

En un post anterior hablé de la elegancia de Python y de algunos trucos para hacer el código incluso más cercano al idioma inglés. La verdad es que últimamente estoy bastante ocupado programando en C++, lenguaje que hacía como 2 años que no utilizaba, y lo cierto es que el código parece más sucio. 🙁

En algunas ocasiones me interesa hacer un atributo privado en una clase, de manera que para acceder a él hay que implementar un método de lectura y otro de escritura (si procede), que se suelen llamar getter y setter respectivamente (no me gustan mucho los atributos privados, de todas maneras). Esto suele suceder cuando la representación externa del valor atributo es distinta de la interna.

Tanto Visual C++ de Microsoft, como Borland C++ tiene mecanismos para implementar getters y setters cada uno a su manera, pero me interesa más un método que sea estandar C++ (así, de paso, compilará también en Intel C++ y en G++ de GNU). Al final implementé esta plantilla y parece que funciona. Se trata de implementar las propiedades como clases:

Lo normal es poner esto en un fichero include.

Y ahora un ejemplo: se trata de un objeto que contiene un vector de enteros. Este objeto vector tiene una propiedad length. Cuando se lee length en realidad se está ejecutando el método size() que provee la STL vector, y cuando se le asigna un valor, se está cambiando el tamaño:

Para recapitular:

cambia la longitud del vector y

lee dicha longitud.

Nota: Este código se libera con una licencia CC0 (Dominio Público) así que úsalo como quieras.

Leer más:

Share

Comentarios cerrados