【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 を擬似的に部分的に適応することができます。