13 SubjectType* mpSubject{};
16 Observer(Observer
const&) =
delete;
17 Observer& operator=(Observer
const&) =
delete;
18 SubjectType* getSubject() {
return mpSubject; }
21 Observer(SubjectType& subject) : mpSubject(std::addressof(subject)) {}
23 void removeFromSubject() {
25 mpSubject->removeObserver(*
static_cast<DerivedType*
>(
this));
29 virtual ~Observer() { removeFromSubject(); }
31 virtual void _onSubjectDestroyed() {}