【发布时间】:2011-03-16 10:23:07
【问题描述】:
考虑这样一个类:
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 double 字段中?
如果没有,您能否建议一种更自然的方式在 C++ 中声明这样的类?
在 C# 中,我会在这里使用带有静态构造函数的静态类,但这不是 C++ 中的选项。我也考虑过将 ImportantConstant1..3 设为非常量字段或函数调用,但两者似乎都逊色。
我发现初始化 const 字段的唯一方法是到 use initializer lists,但似乎无法在这样的列表中传递多输出计算的结果。
【问题讨论】:
-
如果可以的话,能说说
ComputeImportantConstants是怎么实现的吗?是不是比较长?这三个常数如何相互作用,还涉及哪些其他因素?
标签: c++ initialization constants ctor-initializer