I would like to describe an example class hierarchy before I ask my question. I have an abstract class named Abstract. I have a class named UpperClass that was derived from Abstract. I have a class named LowerClass that is contained in UpperClass.
I find that I am able to pass a Abstract* down to LowerClass through the constructors. However, if I am not able to dynamic_cast the Abstract* to UpperClass* in a LowerClass member function. My Visual C++ compiler won't let me do a #include "UpperClass.h" inside lower class. Why is this? Why will C++ let me use a Abstract* in LowerClass but not a UpperClass*? How can I get around this? I need to be able to do this in LowerClass: UpperClassPtr->SomeOtherDataNotInAbstract;