3次元座標を含むライブラリを作成していて、3次元の角度のコンポーネントに2つの名前があることがわかりました:yaw-pitch-rollとheading-標高バンククラス参照メンバが同じクラスの他のメンバを指している
だから私は(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)
}
2名、制度間の表記と同等を維持するという利点を有しています。たとえば:コンパイラが参照が不要でした見つけ出すかどうか、それは構造内のポインタを維持するかどう
Angle angle;
rotate(angle.yaw); // this is equivalent to rotate(angle.heading)
私は思っていました。
また、1人のメンバーに2つの名前を付けるより良い方法はありますか?
私は基本的に同じことを書いていました:)しかし、実際の属性への参照を返すべきではありませんか?それ以外の場合は、代替名で変更することはできません。実際には、 'const float&yaw()const;'と 'float&yaw();'の2つのメソッドセットを用意する必要があります。次に、一定の 'Angle'への参照でも動作します。 – betabandido
@betabandido編集私のコード離れて^ _ ^私はそれが '擬似コード'だと言った。明らかに、これは完全にこのようなものではないでしょう^ _ ^(そして、私は参考文献btw:-Pを返します) – Neal
@LuchianGrigoreああ! **擬似コード** ___擬似コード_ _擬似コード。 – Neal