Estoy creando una biblioteca que implica coordenadas tridimensionales, y descubrí que hay dos nombres para los componentes de un ángulo tridimensional: cabeceo y cabeceo elevación del bancoMiembro de referencia de clase apunta a otro miembro de la misma clase
Así que me hizo el siguiente (hecho en C++ 11):
struct Angle {
float heading;
float elevation;
float bank;
float &yaw = heading;
float &pitch = elevation;
float &roll = bank;
// Some Constructors (copy and assignment have to be made manually)
}
que tiene la ventaja de mantener el equivalente notación entre los dos nombres-esquemas. Por ejemplo:
Angle angle;
rotate(angle.yaw); // this is equivalent to rotate(angle.heading)
Me preguntaba si el compilador se daría cuenta de las referencias eran innecesarias, o si sería mantener los punteros en la estructura.
Además, ¿hay una mejor manera de tener dos nombres para un miembro?
Básicamente estaba escribiendo lo mismo :) Pero, ¿no deberías devolver referencias a los atributos reales? De lo contrario, no se pueden modificar con el nombre alternativo. En realidad, se deben proporcionar dos conjuntos de métodos: 'const float & yaw() const;' y 'float & yaw();'. Entonces también funcionará con referencias a un 'Ángulo 'constante. – betabandido
@betabandido edito mi código lejos^_^como dije es 'pseudocode'. Obviamente, no sería completamente así^_^(y devuelvo referencias por cierto :-P) – Neal
@LuchianGrigore ahhh! ** pseudocódigo ** ___pseudocódigo___ _pseudocódigo_. – Neal