Nested Class Declarations
Inside the scope of a class, we can declare more than just data members and member functions; we can declare a class inside another class. These classes are called nested classes.
Since a nested class declaration happens inside the outer class, it has access to all the declared names as if it were part of the outer class: it can access even private declarations.
On the other hand, a nested class is not associated with any instance, so it can only access static members.
To access a nested class, we can use the double colon (::), similar to accessing static members of the outer class. Let's examine the following example:
// Declaration class Coordinate { ... struct CoordinateDistance { float x = 0; float y = 0; static float walkingDistance(CoordinateDistance distance); } }; // Create an instance of the nested class CoordinateDistance Coordinate::CoordinateDistance distance; /* Invoke the static method walkingDistance declared inside the nested class CoordinateDistance...