我有一个引用了一堆其他类的类。我希望能够增量式地添加这些引用(即,不是所有的同时都在构造函数中),并且我想禁止从我的类中删除这些引用的基础对象的能力,我也想测试NULL-ness在这些参考文献中,我知道一个特定的参考文献尚未添加。完成这些要求的好设计是什么?如何在一个类中最好地处理一堆引用
0
A
回答
1
我同意您应该使用boost::shared_ptr
的其他评论。
但是,如果您不希望持有这些引用的类部分控制它引用的对象的生存期,则应考虑使用boost::weak_ptr
来保存引用,然后在需要时将其转换为shared_ptr
。这将允许在您的课程之前删除引用的对象,并且在使用它之前,您将始终知道对象是否已被删除。
1
这听起来像你可能会试图建立一个Service Locator。
作为旁注:我个人建议不要这样做,因为it is going to make testing really, really painful if you ever want to do it。构造器注入(你试图避免的东西)将使测试变得更容易。
0
不应该使用refcounted类,以便您的引用将被管理,直到您的主类被破坏。
0
您很可能正在寻找boost::shared_ptr
。
0
尽管您使用boost:; shared_pointer的所有建议,但从您的帖子中可以看出,这样做很合适,因为该类似乎没有所有权语义。普通的C++指针在这里可以做得很好。
在一天结束时很难阻止通过智能指针删除,因为智能指针必须以某种形式或其他形式提供对底层哑指针的访问,这总是可以被删除。对于某些问题,没有技术解决方案,在这种情况下,代码检查是检测使用包含指针的语义错误的最佳方法。
0
你想引用的对象可以从这样的东西派生。这会阻止你删除它们。
T类 类不可删除:公共牛逼 { 私人: 无效的operator delete(void *的); };
相关问题
- 1. 如何在PHP中最好地处理我的多维数组?
- 2. 如何在Android中最好地处理LocalDateTimes和UTC时间?
- 3. 如何在Android中使用处理程序一个接一个地正确动画堆叠视图?
- 4. MSMQ如何在使用二进制编码时最好地处理类
- 5. 排列多个div如何最好地处理布局
- 6. 如何处理另一个类的ActionEvent
- 7. 的jqGrid:如何最好地利用处理显示/隐藏列
- 8. 如何最好地处理ExpressJS POST路线中的错误
- 9. 在另一个类中处理事件
- 10. 在另一个类中处理JFrame
- 11. 如何处理文件恰好一次
- 12. 如何在多个浏览器窗口共享同一会话时最好地处理用户状态?
- 13. 如何在另一个类中引用一个字符串?
- 14. 如何最好地遵循一个函数来理解它在做什么?
- 15. python 2.7:如何最好地删除在词典理解中引用的变量?
- 16. 如何最好地创建一个Windows 8地铁枢纽页
- 17. 在处理中使用另一个类中的一个类的变量
- 18. 如何最好地建立一个架构在DynamoDB
- 19. 如何从PQueue整数中最好地返回一个double?
- 20. Java:如何引用类中的一个类,但引用另一个元素?
- 21. 处理一类
- 22. 如何在处理中创建一个类的新实例
- 23. 如何为一个类添加一个异常处理程序?
- 24. 如何在NHibernate中处理具有唯一字段的引用类
- 25. scala如何处理一个类用它自己的泛型扩展一个类?
- 26. 更好地理解Swift中的引用类型和值类型
- 27. 用CURL处理URL的一堆
- 28. 如何创建一个reducer来处理z-index堆栈
- 29. 如何最好地处理重复日历事件的异常
- 30. 重写位指示后如何最好地更新处理
你能更具体吗? – 2009-05-20 00:05:51