据我所知,朋友函数将使函数可以自由访问整个类。我可以通过只让它访问单个成员函数来扩展此友元函数的范围吗?
例如:
class ResourceCache {
Resource* Create(ResourceDesc) {
...
return ResourceDesc.Create();
}
}
class ResourceDesc {
...
Resource* Create();
}
在此示例中,我希望ResourceCache::Create
只能访问ResourceDesc::Create
,但不能访问所有ResourceDesc
。
这可能吗?
答案 0 :(得分:8)
C ++不会为您提供细粒度的访问控制。不要过于担心准确地使用访问控制,这是你或你的合作者编写的所有代码,你害怕可能会发生什么坏事?
答案 1 :(得分:2)
C ++不允许这样做。
我的直接想法是,如果你想这样做,至少可能表明你的ResourceDesc
(以及可能ResourceCache
)可能在较大的一面并可能做得更多真的应该超过一个班级。