2011-09-18 4 views
3

클래스 A가 클래스 B의 친구이고 B가 클래스 C의 친구라고 가정 할 때 A의 친구 C 또는 C의 친구 또는 A의 친구 또는 둘 모두입니까?C++ 클래스간에 "friend"관계를 이전 할 수 있습니까?

+0

우정은 우정이나 상속으로 양도 할 수 없습니다. –

+0

가능한 [C++의 친구 범위] (http://stackoverflow.com/questions/437250/friend-scope-in-c) –

답변

5

아니요, C++의 우정은 과도하지 않습니다. 는 C++ 03 표준에서

, 11.4-8은 :

우정은 상속되지도 이행되지도. 예 :

class A { 
    friend class B; 
    int a; 
}; 

class B { 
    friend class C; 
}; 

class C { 
    void f(A* p) 
    { 
    p->a++; 
    // error: C is not a friend of A 
    // despite being a friend of a friend 
    } 
}; 

class D : public B { 
    void f(A* p) 
    { 
    p->a++; 
    // error: D is not a friend of A 
    // despite being derived from a friend 
    } 
}; 
1

없음. 그래서 클래스는 C 클래스의 친구가되지 않을 것,

친구, 이적을 상속 또는

0

C++ 클래스 우정이 방법으로 전파되지 않는 상호되지 다음 C++FAQ을 참조하십시오. 그것은 페이스 북과 같습니다, 친구 중 누군가가 누군가와 친구가된다면 그 사람은 자동으로 친구가되지 않습니다. =)