我正在制作一个涉及 3-D 坐标的库,并发现 3-D 角度的组件有两个名称:yaw-pitch-roll 和 heading-elevation-bank
所以我做了以下(在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)
我想知道编译器是否会发现引用是不必要的,或者是否会将指针保留在结构中。
另外,有没有更好的方法让一个成员有两个名字?