6

いくつかのコマンドライン引数を取り、これらを後続のシミュレーションのパラメーターとして使用するプロジェクトを開発しています。(バッチで多数の実験を実行したい)。

実行時にグローバル変数を設定する最良の方法は何ですか? グローバルという意味では、変数は実行中に変更される可能性がありますが、多数のクラスにわたってアクセスできる必要があります。

現在、他のクラスに含める Config オブジェクトにそれらを読み込みます。誰かがより良いアイデア (xml?) を持っている場合、私はすべて耳にします。

ありがとう!

4

1 に答える 1

8

アクセスしやすいように、関連するすべての変数を 1 つの屋根の下に配置します。2 つのアプローチが可能です。

(1) 名前空間グローバル

namespace Configuration {
  extern int i;
  extern bool b;
  extern std::string s;
}

(2) クラスの静的メンバ

class Configuration {  // provide proper access specifier
  static int i;
  static bool b;
  static std::string s;
}

それらをうまく追跡するには、名前空間/クラス内のラッパーとして getter()-setter() メソッドを使用します。
getter-setter を使用すると、プログラムが要求する場合、スレッドセーフな方法でそれらを処理できます。

于 2012-04-23T06:02:32.710 に答える