Надлежащее использование друга?Контейнерный класс, предназначенный для манипулирования объектами определенного типа - PullRequest
1 голос
/ 19 июля 2010

Допустим, у вас есть FooManager, созданный для управления несколькими объектами типа Foo. FooManager необходимо увидеть некоторые части его Foo, чтобы оценить их текущее состояние. До того, как я использовал несколько аксессоров в Foo для просмотра этих частей, пока я не понял, что FooManager - единственный класс, фактически использующий их. Я решил сделать FooManager другом Foo. Это привело к тому, что большая часть класса Foo стала частной.

Это правильное использование друга? Мое рассуждение состояло в том, что это помогает инкапсуляции, потому что, хотя FooManager дает полный доступ к внутренним элементам Foo, оно полностью блокирует доступ ко всему остальному.

1 Ответ

1 голос
/ 19 июля 2010

Если нет другого и более чистого способа достижения того, чего вы пытаетесь достичь, это звучит как честный подход.

Что касается инкапсуляции, см .: http://www.parashift.com/c++-faq-lite/friends.html#faq-14.2.

...