Программист Василий и Singleton Для некоторой операционной системы для управления громкостью звука в системе используется класс Sound. Чтобы не было конфликтов в системе, экземпляр этого класса должен быть уникальным. Программисту Василию поручили решить задачу, но он напился и в пьяном угаре смог только запустить IDE. Осторожно столкнув Василия на пол, укройте его одеялом и напишите класс. Класс должен содержать: - публичную функцию instance, возвращающую указатель на экземпляр; - публичные функции setVolume(const size_t &) и getVolume() для управления громкостью звука; - публичные функции setDevice(const Device &device) и getDevice() для управления устройствами воспроизводящими звук. Уровень громкости по умолчанию равен нулю. template class Sound { public: static std::shared_ptr instance() { if (sound_ == nullptr) { sound_ = std::make_shared(Sound()); } return sound_; } void SetVolume(const size_t &volume) { volume_ = volume; } size_t GetVolume() const { return volume_; } void SetDevice(const Device &device) { device_ = device; } Device GetDevice() const { return device_; } private: explicit Sound() : volume_(0) {} static std::shared_ptr sound_; size_t volume_; Device device_; }; template std::shared_ptr> Sound::sound_ = nullptr;