我有一個引用了一堆其他類的類。我希望能夠增量式地添加這些引用(即,不是所有的同時都在構造函數中),並且我想禁止從我的類中刪除這些引用的基礎對象的能力,我也想測試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. 如何最好地處理在一個漸變維度(SCD2)
- 2. 如何在Android中最好地處理LocalDateTimes和UTC時間?
- 3. 如何在PHP中最好地處理我的多維數組?
- 4. 如何在Android中使用處理程序一個接一個地正確動畫堆疊視圖?
- 5. MSMQ如何在使用二進制編碼時最好地處理類
- 6. 如何最好地實現一個GIF加載類?
- 7. 如何在PHP中引用一個類?
- 8. 排列多個div如何最好地處理佈局
- 9. 如何在一個xib中處理兩個地圖視圖?
- 10. 最好的地方,在一個函數
- 11. 如何處理另一個類的ActionEvent
- 12. 如何最好地處理flixel android應用程序切換?
- 13. 的jqGrid:如何最好地利用處理顯示/隱藏列
- 14. 如何最好地處理Ruby中的HTTP響應?
- 15. 如何最好地處理ExpressJS POST路線中的錯誤
- 16. 在另一個類中處理JFrame
- 17. 在另一個類中處理事件
- 18. 如何處理文件恰好一次
- 19. 如何在一個變量中處理多個枚舉類型
- 20. 如何在多個瀏覽器窗口共享同一會話時最好地處理用戶狀態?
- 21. 如何在數據庫應用程序中最好地處理多種語言?
- 22. 如何在另一個類中引用一個字符串?
- 23. python 2.7:如何最好地刪除在詞典理解中引用的變量?
- 24. 如何最好地複製數組的最後一個元素?
- 25. 如何最好地遵循一個函數來理解它在做什麼?
- 26. 如何最好地創建一個Windows 8地鐵樞紐頁
- 27. 如何找到一個好的庫來處理C#中的XML
- 28. 如何最好地使用NHibernate的BeginTransaction是一個循環?
- 29. 如何從PQueue整數中最好地返回一個double?
- 30. 如何最好地建立一個架構在DynamoDB
你能更具體嗎? – 2009-05-20 00:05:51