Estaba convirtiendo una estructura en una clase para poder aplicar una interfaz setter para mis variables.
No quise cambiar todas las instancias donde se leyó la variable. Así que convierte esto:¿Algún problema con esta lengua de interfaz de acceso const referencia C++?
struct foo_t {
int x;
float y;
};
a esto:
class foo_t {
int _x;
float _y;
public:
foot_t() : x(_x), y(_y) { set(0, 0.0); }
const int &x;
const float &y;
set(int x, float y) { _x = x; _y = y; }
};
estoy interesado en esto porque parece modelar idea de C# 's de las propiedades públicas de sólo lectura.
Compila muy bien, y todavía no he visto ningún problema.
Además de la repetición de las referencias de const en el constructor, ¿cuáles son las desventajas de este método?
¿Algún problema de alias extraño?
¿Por qué no he visto este idioma antes?
¿Por qué es const int & x; const float & y; ¿necesario? – Arun
@ArunShaha Él lo explica en su pregunta. El objetivo es proporcionar un "acceso" a 'x' y' y' que mantenga la misma sintaxis que el acceso a las variables en la estructura. –
C# y C++ son idiomas completamente diferentes con sus propios estilos y usos. Copiar el estilo de un idioma en otro llevará a muchos problemas, es mucho más simple aprender las mejores técnicas para el nuevo idioma, no copiar estilos que pueden no ser compatibles (como el horrible concepto de geter/seter) –