私は現在、設定ファイルから変数を読み込む関数を持っています。これらを使用して、一連の定数設定変数を初期化します。C++の設定ファイルからカスタムの "const"変数をロードするにはどうすればよいですか?
// header file
namespace cfg {
extern const char *config_value;
}
// source file
namespace cfg {
const char *config_value;
}
bool load_config() {
cfg::config_value = load_config_line("config_value");
}
const char *load_config_line(const char *key) {
// read value from config.cfg...
}
これはかなりうまくいきます。問題は、このコードを他のいくつかのプロジェクトで再利用したいことです。つまり、定数値を変更する必要があります。これは、コード内の4つの異なる場所にあるconfig_value
の名前を変更することを意味します。また、私は、異なるプロジェクトで維持するために本質的に同じコードの複数のコピーを持っていることを意味します。
読み込みと解析に同じコードを使用して異なる値の定数値を設定する方法はありますか?おそらく、私がしなければならないのは、ヘッダファイルを変更するだけで、設定ファイルの値の名前が自動的に見つかるからです。面倒なことは、の外向きの設定値そのものが定数であり、コンパイル時に利用可能であることが理想です。(文字列と値のマップを使用するなどは望ましくありません。
すでに実装されているシリアライザを使用して、ホイールを再作成してグローバル変数を処理する代わりに、struct/classインスタンスにデータを格納して再ロードする必要があります。 – Klaus
@Klaus申し訳ありません "シリアライザ"について詳しく説明できますか? – Drgabble
お気に入りの検索エンジンを使用してください:-)そこには、C++データ構造からファイル/ネットワーク/データベースにデータを読み書きする方法を提供するライブラリがたくさんあります。 http://www.boost.org/doc/libs/1_59_0_b1/libs/serialization/doc/index.html – Klaus