私は次のクラスを持っています:-
class A {
public:
// some stuff that everyone should see
protected:
// some stuff that derived classes should see
private:
// some stuff that only I can see
void f();
void g();
};
ここで、f() を特定のクラス セット (クラス B、C、D など) からのみアクセス可能にし、g() を他の特定のクラス セット (クラス D、E、F など) からアクセスできるようにします。これを C++ で指定する方法はありますか? A のすべてのクラスを友達にすると、f と g の両方が B、C、D、E、F (A の他のプライベート メンバーと共に) からアクセスできるようになりますが、これは私が望むものではありません。
これは可能ですか、それともオブジェクト モデルを変更する必要がありますか?