У меня есть метод FOO()
в классе A
, который в качестве аргументов принимает среди членов данных класса B
среди прочего (скажем, это два поплавка и один int). Как я понимаю это, лучше всего реализовать это с помощью чего-то вроде:
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
, полностью исключаются, вы должны соответствующим образом изменить A
и FOO1()
. Напротив, в последнем подходе FOO2()
не имеет значения, существует ли класс B
, на самом деле все, о чем он заботится, состоит в том, что он снабжен двумя поплавками (которые в этом случае состоят из B.member1
и B.member2
) и int (B.member3
). В последнем примере также есть связь, но эта связь обрабатывается везде, где FOO2()
получает вызов или какой-либо класс вызывает вызов FOO2()
, а не в определении A
или B
.
Я предполагаю, что вторая часть этого вопроса: есть ли хороший способ разделить A
и B
дальше, когда мы хотим реализовать такое решение, как FOO1()
?