-2

私はクラスConfigを持っています:

class Config
{
    public:
        Config();
        ~Config();
        void Read();
        CData var; //CData - some config structure
};

他のクラスの値にアクセスする正しい方法は何ですか?いくつかのオプションがあります:

  1. グローバルにする
  2. 他のクラスへの参照の転送
  3. あなたの変種

私のシステムでconfig.var.someは、クラスの90%で必要です。

4

3 に答える 3

3

3)静的を使用できます。これは、基本的にグローバルにするのと同じです。

class Config
{
    public:
        static CData var; //CData - some config structure
        static CData Read();
};

//these in a cpp file
CData Config::var = Config::Read();

int main() {
    std::cout << Config.var.something;
}

しかしこの場合、それvar自体をグローバルにするのがおそらく最善です。

于 2012-04-24T23:20:16.607 に答える
0

3番目の方法:アクセサ関数をConfigクラスに追加します。

class Config
{
    public:
        Config();
        ~Config();
        void Read();
        int getNumberOfFooBars() const { return var.foo_bars; }
private:
        CData var; //CData - some config structure
};
于 2012-04-24T23:13:43.487 に答える
0

私は通常、怠惰でグローバルにするのではなく、このようなオブジェクトを参照として渡します。オブジェクトを渡すと、コンストラクター/メンバー初期化子リストを見ると、どのクラスがオブジェクトを使用するかが非常に明確になります。逆に、グローバルにする(シングルトンなど)と、自分や他の人がオブジェクトを必要とするクラスを一目で確認するのが難しくなります。

configクラスにアクセサ関数を追加して、他のオブジェクトが定義されたインターフェイスを介してそのメンバーにアクセスできるようにします。これにより、configクラスとインターフェイスするコードを壊すことなく、クラスの内部を変更できます。

于 2012-04-24T23:13:52.237 に答える