Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Observer pattern and signals/slots for C++11 projects

License

Notifications You must be signed in to change notification settings

dacap/observable

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

61 Commits

Repository files navigation

Observable Library

Copyright (C) 2016-2025 David Capello

build MIT Licensed

Library to use the observer pattern in C++11 programs with observable/observer classes or signals/slots.

Features

  • 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

Observable

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);

Signal

#include "obs.h"
int main() {
 obs::signal<void (int, int)> sig;
 sig.connect([](int x, int y){ ... });
 sig(1, 2); // Generate signal
}

Tested Compilers

  • Visual Studio 2015
  • Xcode 7.3.1 (-std=c++11)
  • GCC 4.8.4 (-std=c++11)

About

Observer pattern and signals/slots for C++11 projects

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

AltStyle によって変換されたページ (->オリジナル) /