クラスのデータメンバーからの入力を引数として取るFOO()
クラスのメソッドがあります(2つのfloatと1つのintであるとしましょう)。私がこれを理解している方法では、一般的に次のような方法でこれを実装することをお勧めします。A
B
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 ( ) が提供されることだけです。確かに、後者の例にもカップリングがありますが、このカップリングはどこでも処理されますA
FOO1()
FOO2()
B
B.member1
B.member2
B.member3
FOO2()
またはFOO2()
の定義ではなく、たまたま呼び出しているクラスが呼び出されます。A
B
この質問の2番目の部分は、次のようなソリューションを実装したい場合にA
、分離する良い方法はありますか?B
FOO1()