【c++】 クラス内のメンバを部分的にアクセス許可する部分的なフレンド

今日のはちょっとネタっぽいですが、
c++ やってて、設計的にどうしても、一部分だけアクセスを許したいけど全体公開はしたくない、ってことはたまーにありますよね。

んで、最近よく使ってるのが以下のコード。

class MyClass
{
public:
	class ProcessAccessKey
	{
		friend class MyClass;
		friend class XXXX;
	private:
		ProcessAccessKey(){}
	};
	
public:
	void process( const ProcessAccessKey& key );
	
};


MyClass::ProcessAccessKey が生成できれば、MyClass::process() へのアクセスを許す感じです。
で、どうしてもアクセスが必要なクラスに対しては ProcessAccessKey にフレンド登録します。


一応これで friend を擬似的に部分的に適応することができます。