properly detach observers at destruction

This commit is contained in:
geeksville 2020-04-17 13:24:38 -07:00
parent 7730bd762a
commit 04a83fd6b7

View File

@ -11,10 +11,9 @@ template <class T> class Observable;
*/ */
template <class T> class Observer template <class T> class Observer
{ {
Observable<T> *observed; Observable<T> *observed = NULL;
public: public:
Observer() : observed(NULL) {}
virtual ~Observer(); virtual ~Observer();
@ -92,5 +91,9 @@ template <class T> Observer<T>::~Observer()
template <class T> void Observer<T>::observe(Observable<T> *o) template <class T> void Observer<T>::observe(Observable<T> *o)
{ {
// We can only watch one thing at a time
assert(!observed);
observed = o;
o->addObserver(this); o->addObserver(this);
} }