2012-07-16 2 views
2

필자가 아는 한, friend 함수는이 함수에 전체 클래스에 대한 자유 액세스 권한을 부여합니다. 이 친구 기능을 단일 멤버 함수에만 액세스하도록 범위를 지정할 수 있습니까? 예를 들어다른 클래스 멤버 함수를 통해서만 액세스 할 수있는 멤버 함수를 만들 수 있습니까?

:이 예에서

class ResourceCache { 
    Resource* Create(ResourceDesc) { 
     ... 
     return ResourceDesc.Create(); 
    } 
} 

class ResourceDesc { 
    ... 
    Resource* Create(); 
} 

, 나는 단지 ResourceDesc::Create에 액세스 할 수 있도록 ResourceCache::Create를 원하지만 ResourceDesc의 모든.

그럴 수 있습니까?

답변

8

C++는이 세분화 된 액세스 제어를 제공하지 않습니다. 액세스 제어 권한을 정확하게 얻는 것에 대해 너무 걱정하지 마십시오. 귀하 또는 귀하의 공동 작업자가 작성한 모든 코드가 있습니다. 어쨌든 나쁜 일이 발생할 수 있습니다.

+0

조직과 청결에 대해 생각하고있었습니다. 답을 고맙습니다. – Icebone1000

+1

정직하게 그것이 조직이나 청결에 어떻게 기여하는지 보지 마라. 하지만 괜찮아! – EML

2

C++은 허용하지 않습니다.

내 즉각적인 생각은이 작업을 수행하려는 경우, 그것은 적어도 가능한 표시 있다는 것이다 당신의 ResourceDesc (그리고 아마도 ResourceCache뿐만 아니라)이 큰 편에 있고 하나 개 이상의 클래스가 정말해야 할 수 있습니다.

관련 문제