>>624
struct Data* ptr;の記法が特殊なだけで、
struct Data;は一貫して前方宣言なのでは?