C++ではインターフェースと実装の分離を実現するために、pimplイディオムというアプローチを採ることがある。 どんなアプローチかというと 対象のクラスを公開用クラスと実装用クラスの2つに分離する。 公開クラスのヘッダファイルで行うこと 公開用メンバ関数の宣言を行う。 private領域に、実装用クラスのポインタのみを保持する。 そのため、実装用クラスを宣言(先行宣言)する。 公開クラスのソースファイルで行うこと 実装用クラスのヘッダファイルをインクルードする。 コンストラクタで、実装用クラスのポインタをnewした実装クラスのインスタンスで初期化する。 他のメンバ関数は、全て、実装用クラスのポインタを経由して、対応する(基本は同名の)メンバ関数に転送する。(delegate) 実装クラスは普通に実装すればよい。 さて、見ていこう。 クライアントであるmain.cppでは、公開クラスのヘッダ