次のようなクラスを考えてみましょう:
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);
}
実行時に 3 つの定数を計算するルーチン (ComputeImportantConstants) があります。計算がかなり複雑で、本質的に 3 つの値すべてを一度に生成するとします。さらに、結果はビルド構成に依存するため、結果をハードコーディングすることはできません。
これらの計算された値をクラスの対応する const double フィールドに格納する賢明な方法はありますか?
そうでない場合、C++ でそのようなクラスを宣言するより自然な方法を提案できますか?
C# では、ここで静的コンストラクターを持つ静的クラスを使用しますが、C++ ではそれはオプションではありません。また、ImportantConstant1..3 を非 const フィールドまたは関数呼び出しにすることも検討しましたが、どちらも劣っているようです。
私が見つけた const フィールドを初期化する唯一の方法は、初期化子リストを使用することですが、そのようなリストで複数出力計算の結果を渡すことはできないようです。