考虑这样一个类:
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);
}
有一个例程 (ComputeImportantConstants) 在运行时计算三个常量。假设计算相当复杂,并且本质上一次产生所有三个值。此外,结果取决于构建配置,因此不能对结果进行硬编码。
是否有一种明智的方法可以将这些计算值存储在类的相应 const 双字段中?
如果没有,您能否建议一种更自然的方式在 C++ 中声明这样的类?
在 C# 中,我会在这里使用带有静态构造函数的静态类,但这不是 C++ 中的选项。我还考虑过使 ImportantConstant1..3 成为非常量字段或函数调用,但两者似乎都逊色。
我发现初始化 const 字段的唯一方法是使用初始化列表,但似乎无法在这样的列表中传递多输出计算的结果。