2011-03-06 3 views
7

아직 구체적인 사례를 찾지 못했습니다. 그러나 나는 이것을 필요로 할 것이라고 생각하는 코드를 작성하려고한다. 그래서 나는 알고 싶었 :두 클래스가 서로 친구가 될 수 있습니까?

  1. 두 클래스가 서로 친구가 될 수 있습니다; 그들은 자유롭게 개인 에 액세스 할 수 있고 다른 사람의 보호 된 회원들에게 액세스 할 수 있습니다 (대답은 '예'라고 생각하며, 물론 ). 자세한 참조 나 기타 질문 링크 ( )도 환영합니다. 나는 forward 선언문을 알고 있으며 guard 컴파일러 사전 지시어와 그 사용법을 포함합니다. 제 질문은 C 언어의 의미와 관련이 있습니다.이 가능성에 관해서는 상호 우호적 인 관계와 적절한 사용 방법에 관해서 무엇을 제안 할 수 있는지에 관해서 질문합니다.
  2. 일반적으로 권장되는 기능입니까? 사람들은 이런 종류의 디자인을 정기적으로 사용합니까? 어떤 경우에 권장되는 디자인입니까? (바람직하게는 예가 일부 있음). 이것은 당신이 해결하고자하는 문제에 달려 의미가

    class A { 
        friend class B; 
    }; 
    
    class B { 
        friend class A; 
    }; 
    

    여부 : 당신

답변

8

상호 우정이있다. 특정 상황에서는 확실히 이해할 수 있습니다.

상호 우정을 이용하는 현재 프로젝트의 유일한 예는 컨테이너 구현입니다. 컨테이너 클래스는 iterator 클래스의 친구이며 그 반대도 마찬가지입니다.

+0

아마도 다른 용어가 필요합니다. 이 클래스는 단지 친구가 아닌 형제 자매입니다 :-) –

+12

@Martin : 아마도 누군가 C++에'bff' 키워드를 추가하라는 제안을 초안 할 수 있습니다! –

+9

@Martin : * 혜택이있는 친구 *? "네가 네가 보여 주면 내가 너에게 보여 줄게"관계. – nybbler

관련 문제