gpt4 book ai didi

c++ - const 字段的复杂初始化

转载 作者:可可西里 更新时间:2023-11-01 14:57:22 25 4
gpt4 key购买 nike

考虑这样一个类:

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 , 但似乎不可能在这样的列表中传递多输出计算的结果。

最佳答案

为什么你不能这样做:

MyReferenceClass ComputeImportantConstants(){
//stuff to compute
return MyReferenceClass( const1, const2, const3 );
}

MyReferenceClass{
public:
MyReferenceClass(double _1, double _2, double _3)
: m_Const1(_1),
m_Const2(_2),
m_Const3(_3){}

double getImportantConst1() const { return m_Const1; }
double getImportantConst2() const { return m_Const2; }
double getImportantConst3() const { return m_Const3; }
private:
const double m_Const1,
m_Const2,
m_Const3;
};

像那样将计算函数变成工厂函数?

关于c++ - const 字段的复杂初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3256192/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com