>>547,548

より詳しく言うならヘッダファイルのstruct XImpl *pimpl;
よりも前でXImplを宣言する必要がある。

それにインナークラス(クラス内でのクラス)なら親クラスであるクラスXの中に書かないといけない

//ヘッダーファイル x.h
class X {
public:
class XImpl {
//省略(いろいろな定義)
};
//省略
private:
struct XImpl *pimpl ;
};

//ソースファイル x.cpp
#include x.h
// メンバ関数の実装
// 例…クローン関数(似非)

X::XImpl X::XImpl::operator() (void)
{ return X::XImpl(*this); };