みなさんありがとうございました、色々やってみましたがいけそうです。
え〜と混乱してしまいましたけど、
CDocument.cppでCDocument.hをインクルードする時にCData.hもインクルードする必要があるのは、
CDocument.cpp内にCDocumentのコンストラクタの実装があるから。
CHoge.cppでCDocument.hを単体でインクルードしても、CDataを触ったりしない限りCData.hをインクルードしなくてもコンパイルとおる。
という理解で良いでしょうか。
ていうかこれって凄いアイディアじゃないですか。STLに入れて貰えそうじゃないですか