クラスのデータメンバーからの入力を引数として取るFOO()クラスのメソッドがあります(2つのfloatと1つのintであるとしましょう)。私がこれを理解している方法では、一般的に次のような方法でこれを実装することをお勧めします。AB
A->FOO1(B, other_data_x)
それよりも
A->FOO2(B.member1, B.member2, B.member3, other_data_x).
唯一ではありませんが、これの利点は、どのメンバーBにアクセスするかの詳細が残されFOO1()ているため、実装の詳細を隠すのに役立つということです。
しかし、私が疑問に思っているのは、これが実際にクラスAとB. A前者の場合のクラスは、クラスBが存在することを( のようなものを介してinclude class_B_header.h)知る必要があり、メンバーがB変更されたり、別のクラスに移動されたり、クラスが完全に削除されたりした場合は、それに応じBて変更する必要があります。対照的に、後者のアプローチでは、 class が存在するかどうかは気にしません。実際、気にするのは、2 つの float (この場合はandで構成されます) と int ( ) が提供されることだけです。確かに、後者の例にもカップリングがありますが、このカップリングはどこでも処理されますAFOO1()FOO2()BB.member1B.member2B.member3FOO2()またはFOO2()の定義ではなく、たまたま呼び出しているクラスが呼び出されます。AB
この質問の2番目の部分は、次のようなソリューションを実装したい場合にA、分離する良い方法はありますか?BFOO1()