Да, вам просто нужно добавить имя содержащего класса, а затем оператор разрешения области действия ::
и имя внутреннего класса, например,
// A.h
class A {
public:
class B {
public:
B() { }
void dostuff();
};
A() { }
void doStuff();
};
// A.cpp
void A::doStuff() {
// stuff
}
void A::B::doStuff() {
// stuff
}
A a;
a.doStuff();
A::B b;
b.doStuff();
Нет (практического) ограничения на количество вложенных классов, которые вы можете иметь, и вы просто продолжаете добавлять ::
, чтобы идти дальше и дальше.