C ++では、変数を定数にして、コンストラクターで代入するにはどうすればよいですか? これを行う理由は、すべてのデータを XML ファイルに入れ、そのデータを変数にロードすることにより、データ ドリブン デザインを使用しようとしているからです。問題は、初期化リストに値をロードできないため、コンストラクター (または他の場所) でロードする必要があることですが、変数は定数ではありません。
XML ファイルは次のとおりです。
<weapons>
<pistol>
<damage>5.0</damage>
...
</pistol>
...
</weapons>
次に、次のようなクラスがあります。
ヘッダ
class Weapon
{
public:
Weapon();
const float damage;
};
ソース
#include "Weapon.h"
Weapon::Weapon()
{
//load damage value into damage variable
}
ダメージ変数は定数であるため、コンストラクター内では何もできず、イニシャライザー リスト内でのみ行うことができますが、明らかに、イニシャライザー リスト内の XML ファイルを読み取るようなコードを実行することはできません。したがって、変数が変更されることはありませんが、変数を定数にしないでください。または、変数を定数のままにして必要なことを行う適切な方法はありますか?