0

クラス設計についてアドバイスが欲しい。3つのクラスがあるとしましょう"class A", "class B" and "class C". 各クラスには異なる名前空間があります。 "A" has an instance of "B", and "B" has an instance of "C". 各クラスには「struct Setting」があり、各クラスは SetSettings() で設定されます。実際には、"A" uses "B" to do its job, and "B" uses "C" to do its job.

私の質問は、これらの階層設定を行うためのより良い方法はありますか?

たとえば、c_settings を定義する代わりにto break the relation between "A" and "C", "B"、同じパラメータを持つことができます..."C::Settings"

前もって感謝します!

ああ

#include "B.h"
namespace A {
struct Settings {
  int param_for_A_1;
  B::Settings b_settings;
};
class A {
  void SetSettings(const Settings& source) {
    settings_ = source;
    b_.SetSettings(source.b_settings);
  }
  Settings settings_;
  B::B b_;
};
}

Bh

#include "C.h"
namespace B {
struct Settings {
  int param_for_B_1;
  int param_for_A_2;
  C::Settings c_settings;
};
class B {
  void SetSettings(const Settings& source) {
    settings_ = source;
    c_.SetSettings(source.c_settings);
  }
  Settings settings_;
  C::C c_;
};
}

チャンネル

namespace C {
struct Settings {
  int param_for_C_1;
};
class C {
  void SetSettings(const Settings& source) {
    settings_ = source;
  }
  Settings settings_;
};
}    

main.cpp

#include "A.h"
int main() {
  A::Settings settings;
  // Hierarchy settings...
  settings.param_for_A_1 = 1;
  settings.b_settings.param_for_B_1= 2;
  settings.b_settings.param_for_B_2 = 3;
  settings.b_settings.c_settings.param_for_C_1= 4;
  class A::A a;
  a_.SetSettings(settings);
  return;
}
4

1 に答える 1