I recently got stuck in a situation like this:
class A { public: typedef struct/class {...} B; ... C::D *someField; } class C { public: typedef
You can't do it, it's a hole in the C++ language. You'll have to un-nest at least one of the nested classes.