It is to my understanding that one should use a forward-class declaration in the event ClassA needs to include a ClassB header, and ClassB needs to include a ClassA header t
When I develop, I have only three things in mind that never cause me any problems.
For all other classes (subclasses and child classes in my project self), I declare them via forward-class.