Observer pattern and signals/slots for C++11 projects
Copyright (C) 2016-2021 David Capello
Library to use the observer pattern in C++11 programs with observable/observer classes or signals/slots.
An observable Widget
:
#include "obs.h"
class WidgetObserver {
public:
virtual ~WidgetObserver() = 0;
virtual void onClick() { }
};
class Widget : public obs::observable<WidgetObserver> {
public:
void processClick() {
notify_observers(&WidgetObserver::onClick);
}
};
An example
#include "obs.h"
class ObserveClick : public WidgetObserver {
public:
void onClick() override {
// Do something...
}
};
...
ObserveClick observer;
Widget button;
button.add_observer(&observer);
#include "obs.h"
int main() {
obs::signal<void (int, int)> sig;
sig.connect([](int x, int y){ ... });
sig(1, 2); // Generate signal
}
-std=c++11
)-std=c++11
)