Event-Driven Programming in C++ 1.0
A case study on event-driven programming in C++
Loading...
Searching...
No Matches
subject.hpp
Go to the documentation of this file.
1
9#ifndef SUBJECT_HPP
10#define SUBJECT_HPP
11
12#include "observer.hpp"
13#include <vector>
14#include <algorithm>
15#include <string>
16
17namespace observer {
18
25class Subject {
26public:
33 observers.push_back(observer);
34 }
35
42 observers.erase(
43 std::remove(observers.begin(), observers.end(), observer),
44 observers.end()
45 );
46 }
47
56 void notify(const std::string &message) {
57 for (auto* observer : observers) {
58 if (observer) {
59 observer->onNotify(message);
60 }
61 }
62 }
63
64private:
65 std::vector<IObserver*> observers;
66};
67
68} // namespace observer
69
70#endif // SUBJECT_HPP
Interface for observer objects.
Definition observer.hpp:35
The Subject class manages a list of observers and notifies them of events.
Definition subject.hpp:25
void addObserver(IObserver *observer)
Adds an observer to the list of observers.
Definition subject.hpp:32
void removeObserver(IObserver *observer)
Removes an observer from the list.
Definition subject.hpp:41
std::vector< IObserver * > observers
Container storing pointers to the registered observers.
Definition subject.hpp:65
void notify(const std::string &message)
Notifies all registered observers of an event.
Definition subject.hpp:56
Implements the Observer design pattern for event notifications.
Declaration of the IObserver interface for the Observer pattern.