ShutdownManager() { s_self = this; }
class ShutdownManager { public: static void RegisterForDeletion(DeletableObject *obj); static void RemoveForDeletion(DeletableObject *obj); protected: ShutdownManager() { s_self = this; } virtual ~ShutdownManager() { s_self = 0; } virtual void registerForDeletion(DeletableObject *obj) = 0; virtual void removeForDeletion(DeletableObject *obj) = 0; private: static ShutdownManager *s_self; };
   ShutdownManager() { s_self = this; }