在我的新项目中,我希望(主要是为了了解它将如何工作)完全禁止我的代码中的原始指针。
我的第一个方法是让所有类都继承自这个简单的类: 模板 班级基地 { 上市: typedef std :: shared_ptr ptr; };
简单地在我需要指针的地方使用class :: ptr。
这种方法似乎很合适,直到我意识到有时我的对象希望将“this”指针传递给其他对象。让我的对象将它包装在shared_ptr中是不可能的,因为那时可能有两个所有者用于相同的指针。我认为这很糟糕。
我的下一个想法是更改'Base'类以实现引用计数本身,因此从'Base'继承的每个类实例只能有一个计数。
这是一个很好的解决方案,有没有更好的解决方案和/或stl已经为我解决了这个问题?
答案 0 :(得分:1)
您可能需要查看enable_shared_from_this。
另一方面,当使用shared_ptr
时,您需要了解循环引用的可能性。为避免这种情况,您可以使用weak_ptr
。这意味着你需要一些方法来区分它们中的两个,所以简单地使用typedef class::ptr
可能就不够了。