我正在制作一个涉及3D坐标的库,发现有两种称为3D角度组件的名称:偏航-俯仰-翻滚和方位-高程-滚转。
因此,我编写了以下代码(使用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)
}
这样做的好处是两种命名方案之间的符号等效。例如:
Angle angle;
rotate(angle.yaw); // this is equivalent to rotate(angle.heading)
我在想编译器是否会发现这些引用是不必要的,还是它会保留结构中的指针。
此外,有没有更好的方法为一个成员拥有两个名称?
const float& yaw() const;
和float& yaw();
。然后它也可以与对常量Angle
的引用一起使用。 - betabandido