プログラム全体で参照する必要があるさまざまな定数があります。グローバル変数を使用するのではなく、static const クラス メンバーを使用しています。
class Human
{
public:
static const int HANDS = 2;
static const int FINGERS = 10;
};
問題は、XML データ ファイルから値を読み取る必要があることです。関数を使用して静的メンバーを初期化できることを知っています。
const int Human::HANDS = ReadDataFromFile();
初期化の順序は同じコンパイル単位でしか予測できないため、それらすべてを同じ CPP ファイルで定義する必要があります。それは実際には問題ではありませんが、少し混乱します。
本当の問題は、コードを実行する前に、ReadDataFromFile() 関数内のすべてを使用できるようにする必要があることです。たとえば、ファイルからの XML データの読み取りを通常処理する XML クラスがあります。ただし、XML クラス オブジェクトが構築される前に静的メンバーが初期化されるため、この場合は使用できません。
どこでもランダムなグローバル変数を除いて、定数を整理するためのより良い解決策はありますか?