Pimplイディオム
【目的】
・ソースファイルの依存関係を減らす。
・プライベートメンバの隠蔽。
【具体的な実装方法】
・※不完全クラスとして実装の詳細クラスをヘッダーで定義する。
・不完全クラスのポインタをメンバとして定義する。
コピーコンストラクト可能( CopyConstructible ) かつ代入可能( Assignable )にしたい場合は、boost::shared_ptrを使用する。
・実装の詳細および、実装の詳細クラスの定義はcppファイルに記述する。
Boost.SharedPointerを使用して実装する方法。
http://boost.cppll.jp/HEAD/libs/smart_ptr/sp_techniques.html#pimpl
※不完全クラス(前方参照クラス)
class Hoge;
struct Hoge;