//ヘッダーファイル x.h
class X {
public:
//省略
private:
struct XImpl *pimpl ;
} ;

//ソースファイル x.cpp
#include x.h
struct X::XImpl {
//省略(いろいろな定義)
};

ソースファイルx.cppのコンパイルができません。
X::での修飾が悪いみたいなエラーが出ますが
原因はなんでしょうか?