Copyright (C) 2016-2025 David Capello
Library to use the observer pattern in C++11 programs with observable/observer classes or signals/slots.
- Generate an observable notification/signal from multiple threads
- Add/remove observers/slots from multiple threads
- Erase/disconnect an observer/slot from the same observable notification/signal
- Reconnect an observer in the same notification
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 }
- Visual Studio 2015
- Xcode 7.3.1 (
-std=c++11) - GCC 4.8.4 (
-std=c++11)