2

私の知る限り、フレンド関数を使用すると、関数はクラス全体に自由にアクセスできます。1 つのメンバー関数にのみアクセスできるようにすることで、このフレンド関数のスコープを設定できますか?

例えば:

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

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

この例では、すべての ではなく、ResourceCache::Createのみにアクセスしたいと考えています。ResourceDesc::CreateResourceDesc

それは可能ですか?

4

2 に答える 2

8

C++ では、これほど細かいアクセス制御はできません。アクセス制御を正確に正しく行うことについてあまり心配する必要はありません。いずれにせよ、それはすべてあなたまたはあなたの協力者が書いたコードです。どのような悪いことが起こるのではないかと恐れていますか?

于 2012-07-16T00:43:53.237 に答える
2

C++はそれを許可していません。

私の当面の考えは、これを実行したい場合は、少なくとも、あなたのResourceDesc(そしておそらくResourceCache同様に)大規模な側にいて、実際に複数のクラスを実行する可能性があることを示している可能性があります。

于 2012-07-16T00:45:04.517 に答える