我是否只能通过其他类成员函数访问成员函数?

时间:2012-07-16 00:39:05

标签: c++ methods scope friend

据我所知,朋友函数将使函数可以自由访问整个类。我可以通过只让它访问单个成员函数来扩展此友元函数的范围吗?

例如:

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

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

在此示例中,我希望ResourceCache::Create只能访问ResourceDesc::Create,但不能访问所有ResourceDesc

这可能吗?

2 个答案:

答案 0 :(得分:8)

C ++不会为您提供细粒度的访问控制。不要过于担心准确地使用访问控制,这是你或你的合作者编写的所有代码,你害怕可能会发生什么坏事?

答案 1 :(得分:2)

C ++不允许这样做。

我的直接想法是,如果你想这样做,至少可能表明你的ResourceDesc(以及可能ResourceCache)可能在较大的一面并可能做得更多真的应该超过一个班级。