Класс внутри класса в C++
Вложенный класс объявляют внутри тела другого класса.
Снаружи его имя пишут так: имя внешнего класса, два двоеточия,
имя вложенного. Получается Log::Line.
Запишем Log со вложенным классом Line:
#include <iostream>
#include <string>
class Log {
public:
class Line {
public:
std::string text;
Line(std::string text) : text(text) {}
};
};
Создадим объект Log::Line и выведем текст строки:
int main() {
Log::Line line("ok");
std::cout << line.text << "\n";
return 0;
}
Полное имя типа склеивает внешний класс и внутренний.
Запишем класс Catalog с элементом Item:
#include <iostream>
#include <string>
class Catalog {
public:
class Item {
public:
std::string title;
int price;
Item(std::string title, int price)
: title(title), price(price) {}
};
};
Создадим объект Catalog::Item и выведем его цену:
int main() {
Catalog::Item item("pen", 10);
std::cout << item.price << "\n";
return 0;
}
Сделайте класс Catalog с вложенным классом
Item: название и цена. Создайте Item
через имя Catalog и выведите название.
Сделайте класс Bundle с вложенным классом
Part и полем label. Создайте объект
Part и выведите его label.