使用继承计算任何类引用?

时间:2010-07-01 09:23:54

标签: c++ inheritance smart-pointers

在我的新项目中,我希望(主要是为了了解它将如何工作)完全禁止我的代码中的原始指针。

我的第一个方法是让所有类都继承自这个简单的类:     模板     班级基地     {     上市:         typedef std :: shared_ptr ptr;     };

简单地在我需要指针的地方使用class :: ptr。

这种方法似乎很合适,直到我意识到有时我的对象希望将“this”指针传递给其他对象。让我的对象将它包装在shared_ptr中是不可能的,因为那时可能有两个所有者用于相同的指针。我认为这很糟糕。

我的下一个想法是更改'Base'类以实现引用计数本身,因此从'Base'继承的每个类实例只能有一个计数。

这是一个很好的解决方案,有没有更好的解决方案和/或stl已经为我解决了这个问题?

1 个答案:

答案 0 :(得分:1)

您可能需要查看enable_shared_from_this

另一方面,当使用shared_ptr时,您需要了解循环引用的可能性。为避免这种情况,您可以使用weak_ptr。这意味着你需要一些方法来区分它们中的两个,所以简单地使用typedef class::ptr可能就不够了。