1. Pimplの場合:
class CXxx {
public:
 (メソッド群)
protected:
 CImpl *pImpl;
};

2. 別解
使う側 :
class CBase {
public:
 virtual CBase *CreateObject();
 (メソッド群)
};
実装する側 :
class CDerived : public Base {
public:
 CBase *CreateObject(); // 実際にはCDeriveの先頭アドレスをCBase*にcastしたものを返す。
 (データメンバ群)
};