我正在使用一个C++应用程序,该应用程序内部具有一些定期创建和销毁的 Controller 对象(使用new)。这些 Controller 有必要向另一个对象注册自己(我们称其为controllerSupervisor),并在销毁它们时注销自己。
我现在面临的问题是在我退出应用程序时发生的:由于销毁顺序不是确定的,因此发生的情况是单个controllerSupervisor实例在(某些) Controller 本身之前被销毁,并且当它们在其中调用unregister方法时他们的析构函数,它们对已经被破坏的对象执行此操作。
到目前为止,我想到的唯一想法(感冒很大,所以可能并不意味着太多)不是将controllerSupervisor作为堆栈上的全局变量,而是放在堆上(即使用new)。但是,在那种情况下,我没有地方删除它(这全是在第三方库中)。
关于什么可能的选项的任何提示/建议,将不胜感激。
最佳答案
您可以使用观察者模式。 Controller 通知其主管它已被销毁。监督员会在销毁 child 时将其传达给 child 。
看看http://en.wikipedia.org/wiki/Observer_pattern
关于c++ - 强制在C++中最后破坏某些东西,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/288217/