/
AirLexa
/
07
Обзор
Документация
Войти
/
AirLexa
/
07
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Lesson_04/Task_2.cpp
1 строка
2 KB
AirLexa
Урок 4
27 июн 2026, 21:19
Верифицирован
27 июн 2026, 21:19
6cd337b
Код
Авторство
О чём код?
#include <fstream> #include <string> #include <utility> class HTMLPrintable { public: virtual ~HTMLPrintable() = default; virtual std::string printAsHTML() const = 0; }; class TextPrintable { public: virtual ~TextPrintable() = default; virtual std::string printAsText() const = 0; }; class JSONPrintable { public: virtual ~JSONPrintable() = default; virtual std::string printAsJSON() const = 0; }; class Data { protected: std::string data_; public: explicit Data(std::string data) : data_(std::move(data)) {} virtual ~Data() = default; }; class HTMLData : public Data, public HTMLPrintable { public: using Data::Data; std::string printAsHTML() const override { return "<html>" + data_ + "<html/>"; } }; class TextData : public Data, public TextPrintable { public: using Data::Data; std::string printAsText() const override { return data_; } }; class JSONData : public Data, public JSONPrintable { public: using Data::Data; std::string printAsJSON() const override { return "{ \"data\": \"" + data_ + "\"}"; } }; void saveTo(std::ofstream &file, const std::string& formattedData) { file << formattedData; } void saveToAsHTML(std::ofstream &file, const HTMLPrintable& printable) { saveTo(file, printable.printAsHTML()); } void saveToAsJSON(std::ofstream &file, const JSONPrintable& printable) { saveTo(file, printable.printAsJSON()); } void saveToAsText(std::ofstream &file, const TextPrintable& printable) { saveTo(file, printable.printAsText()); }