Hãy xem xét một lớp học như thế này:khởi Complex ruộng const
class MyReferenceClass
{
public:
MyReferenceClass();
const double ImportantConstant1;
const double ImportantConstant2;
const double ImportantConstant3;
private:
void ComputeImportantConstants(double *out_const1, double *out_const2, double *out_const3);
}
Có một thói quen (ComputeImportantConstants) mà tính ba hằng số khi chạy. Giả sử tính toán khá phức tạp và vốn đã tạo ra cả ba giá trị cùng một lúc. Hơn nữa, các kết quả phụ thuộc vào cấu hình xây dựng, do đó, mã hóa cứng các kết quả không phải là một tùy chọn.
Có cách nào hợp lý để lưu trữ các giá trị được tính toán này trong các trường đôi const tương ứng của lớp không?
Nếu không, bạn có thể đề xuất cách tự nhiên hơn để khai báo một lớp như vậy trong C++ không?
Trong C# tôi sẽ sử dụng một lớp tĩnh với một hàm dựng tĩnh ở đây, nhưng đó không phải là một tùy chọn trong C++. Tôi cũng đã xem xét việc đưa ra các trường quan trọng không phải là const hoặc các cuộc gọi hàm, nhưng cả hai đều có vẻ kém hơn.
Cách duy nhất để khởi tạo các trường const mà tôi tìm thấy là use initializer lists, nhưng dường như không thể chuyển kết quả của tính toán nhiều đầu ra trong danh sách như vậy.
Nếu có thể, bạn có thể cho biết cách 'ComputeImportantConstants' được triển khai không? Nó có dài không? Làm thế nào để ba hằng số tương tác, những yếu tố nào khác có liên quan? –