2

据我所知,朋友功能将使该功能免费访问整个班级。我可以通过只允许它访问单个成员函数来确定这个朋友函数的范围吗?

例如:

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

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

在这个例子中,我只想ResourceCache::Create访问ResourceDesc::Create,而不是所有的ResourceDesc

那可能吗?

4

2 回答 2

8

C++ 没有给你这种细粒度的访问控制。不要太担心访问控制是否正确,反正都是你或你的合作者编写的代码,你害怕会发生什么坏事?

于 2012-07-16T00:43:53.237 回答
2

C++ 不允许这样做。

我的直接想法是,如果你想这样做,这至少可能表明你的ResourceDesc(也可能ResourceCache也是)可能偏大,并且可能会做不止一门课真正应该做的事情。

于 2012-07-16T00:45:04.517 回答