我最近一直在尝试从我的项目中删除单例和全局变量的使用,但我很难做到这一点。我已经设计了一个更好的替代单例和全局变量的方法,但是我不确定一旦我的应用程序终止后如何处理数据。
我的应用程序需要访问一些东西才能使大多数组件正常工作;有些组件需要访问static std::vector<Foo*> foos;
,有些组件需要访问static std::vector<Bob*> bobs;
,有些需要同时访问。我所做的是为这些向量创建了“管理器”,一个 FooManager 可以访问受保护的静态向量到一个继承它的类,一个 BobManager 对另一个向量执行相同的操作。通过这样做限制了这两个对象的范围。我的问题是在进程终止时如何以及在哪里解除分配每个向量中的指针?多个类现在是这些对象的“管理者”。从派生类?但是如果我在另一个类需要原始数据时释放了一些东西怎么办?
基本上我的问题是如何避免删除不应该删除的指针?唯一的_ptr?shared_ptr? 也欢迎任何其他实现。