Tôi đang tạo thư viện liên quan đến tọa độ 3-D và phát hiện ra rằng có hai tên cho các thành phần của góc 3-D: yaw-pitch-roll và heading- cao-ngân hàngĐiểm thành viên tham chiếu lớp cho thành viên khác trong cùng một lớp
Vì vậy, tôi đã thực hiện như sau (thực hiện trong 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)
}
trong đó có các lợi ích của việc giữ tương đương với ký hiệu giữa hai tên đề án. Ví dụ:
Angle angle;
rotate(angle.yaw); // this is equivalent to rotate(angle.heading)
Tôi đã tự hỏi liệu trình biên dịch có thể tìm ra các tham chiếu không cần thiết hay nếu nó giữ nguyên con trỏ trong cấu trúc.
Ngoài ra, có cách nào tốt hơn để có hai tên cho một thành viên không?
Tôi đã cơ bản viết cùng một điều :) Nhưng, bạn không nên trả lại tham chiếu đến thuộc tính thực tế? Nếu không, chúng không thể được sửa đổi thông qua tên thay thế. Trên thực tế, hai phương thức nên được cung cấp: 'const float & yaw() const;' và 'float & yaw();'. Sau đó, nó cũng sẽ làm việc với các tham chiếu đến một 'Góc' liên tục. – betabandido
@betabandido chỉnh sửa mã của tôi đi^_^như tôi đã nói đó là 'pseudocode'. Rõ ràng nó sẽ không hoàn toàn như thế này^_^(và tôi trả lại tài liệu tham khảo btw :-P) – Neal
@LuchianGrigore ahhh! ** pseudocode ** ___pseudocode___ _pseudocode_. – Neal