Yeah, that's a problem, but should be solved some other way. Possible solutions: 1) ApplicationEventManager must have API to completely detach an observer, this API should be invoked from observer's destructor.
2) ApplicationEventManager can use weak pointers.