2009-05-19 73 views
0

我有一个引用了一堆其他类的类。我希望能够增量式地添加这些引用(即,不是所有的同时都在构造函数中),并且我想禁止从我的类中删除这些引用的基础对象的能力,我也想测试NULL-ness在这些参考文献中,我知道一个特定的参考文献尚未添加。完成这些要求的好设计是什么?如何在一个类中最好地处理一堆引用

+0

你能更具体吗? – 2009-05-20 00:05:51

回答

1

我同意您应该使用boost::shared_ptr的其他评论。

但是,如果您不希望持有这些引用的类部分控制它引用的对象的生存期,则应考虑使用boost::weak_ptr来保存引用,然后在需要时将其转换为shared_ptr。这将允许在您的课程之前删除引用的对象,并且在使用它之前,您将始终知道对象是否已被删除。

0

不应该使用refcounted类,以便您的引用将被管理,直到您的主类被破坏。

0

您很可能正在寻找boost::shared_ptr

0

尽管您使用boost:; shared_pointer的所有建议,但从您的帖子中可以看出,这样做很合适,因为该类似乎没有所有权语义。普通的C++指针在这里可以做得很好。

在一天结束时很难阻止通过智能指针删除,因为智能指针必须以某种形式或其他形式提供对底层哑指针的访问,这总是可以被删除。对于某些问题,没有技术解决方案,在这种情况下,代码检查是检测使用包含指针的语义错误的最佳方法。

0

你想引用的对象可以从这样的东西派生。这会阻止你删除它们。

T类 类不可删除:公共牛逼 { 私人: 无效的operator delete(void *的); };

相关问题