Класс, объявленный внутри другого класса, называют вложенным. Вложенный класс находится в области действия того класса, внутри которого он объявлен. Соответственно, объекты вложенного класса могут использовать компоненты внешнего класса, а компонентные функции и статические компоненты вложенного класса могут быть описаны вне глобального класса.

Пример 1

class Figura {

class Point               // вложенный класс Point
{
int x, y, color;
public:
int getx() { return x; }
int gety() { return y; }
int getcolor() { return color; }
.......
};

class Line                // вложенный класс Line
{
Point Tn, Tk;             // начало и конец линии
public:
void draw(void)           // метод рисования линии
{
....
line(Tn.getx(), Tn.gety(), Tk.getx(), Tk.gety());
}

void setline(int ncolor) {....}
};


};


Пример 2
int x;
        int y;

        class enclose {
        public:
         int x;
         static int s;

         class inner {

            void f(int i)
            {
              x = i;   // ошибка: присваивание enclose::x
              s = i;   // нормально: присваивание enclose ::s
              ::x = i; // нормально: присваивание глобальному x
              y = i;   // нормально: присваивание глобальному y
            }

            void g(enclose* p, int i)
            {
              p->x = i; // нормально: присваивание enclose ::x
            }

          };
        };
        inner* p = 0;   // ошибка: `inner' вне области видимости