I have many abstract classes that describe many abstract ideas and objects. These classes have many complex relationships with each other, and I realize that while writing code with some of the derived classes can get confusing. For example, it isn't completely clear at first glance if class `C` is derived from class `A`, or if it derives from class `B`. This is just an example and doesn't relate to the actual application: These four classes describe 4 different types of vehicles, - Ground - Air - Water - Space Now I'm hoping to declaring my derived classes inside the base class so I can specify the class by doing this: ```cpp class Ground { class HondaAccord; } // Now I know that HondaAccord is for certain a ground vehicle Ground::HondaAccord car(); ``` While for something as simple as this it's not really worth the increased clutter, In my opinion it makes it clearer and explicit in my specific codebase. Plus I could declare the derived classes here and defining the functions elsewhere so I wouldn't need to import a **HondaAccord.h** or anything when using the `HondaAccord` class. It is my understanding that the nested class is effectively the same as a normal class. I was hoping to get more information from more experienced people to understand if there are potential issues down the line that I'm not seeing. Thanks