Consider this classic example used to explain what not to do with forward declarations:
//in Handle.h file class Body; class Handle { public:
It doesn't know whether the destructor will be public or not.