/* * WeatherData.hpp * * Created on: 31 окт. 2021 г. * Author: alexander */ #pragma once #include "Subject.hpp" #include #include #include class WeatherData: public Subject { private: std::list> observers; float temperature; float humidity; float pressure; public: void registerObserver(Observer &o) override { observers.push_back(o); } void removeObserver(Observer &o) override { observers.erase(std::find_if(observers.cbegin(), observers.cend(), [&](const std::reference_wrapper &item) { return &item.get() == &o; })); std::cout << "Осталось в листе: " << observers.size() << " элементов" << std::endl; } void notifyObservers() override { for (Observer &observer : observers) { observer.update(temperature, humidity, pressure); } } void measurementsChanged() { notifyObservers(); } void setMeasurements(float temperature, float humidity, float pressure) { this->temperature = temperature; this->humidity = humidity; this->pressure = pressure; measurementsChanged(); } float getTemperature() { return temperature; } float getHumidity() { return humidity; } float getPressure() { return pressure; } };