Рассмотрим такое понятие как вложенный класс.
Что такое вложенный класс?
Вложенный класс это класс который полностью определен внутри другого класса
От например возьмем класс String и определим в нем другой класс
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#ifndef STRING1_H #define STRING1_H class String { struct Srep; }; struct String::Srep { }; #endif |
В данном примере Srep вложенный класс. Мы в классе String просто объявили класс Srep, а само определение можно сделать и вне класса через синтаксис, операцию разрешения области видимости struct String::Srep.
Экземпляр обычного класса может существовать сам по себе, а экземпляр внутреннего не может, без привязки к включающему его классу. Проверим.
1 2 3 4 5 6 7 8 9 |
#include "String1.h" int main() { Srep a;//ошибка вне области видимости String::Srep a;//ошибка закрытый член return 0; } |
В данном примере мы не смогли создать класс Srep потому, что он закрытый член класса, если мы его сделаем открытым public:, то у нас создается структура a которая имеет тип Srep.
За вложенные классы пока достаточно, если еще чо нить новенькое вылезет, то добавлю инфу еще сюда.