我正在爲SQL數據庫打包,我返回的對象是shared_ptr
。
我想支持陣列類型訪問(即row["column"]
而不是row->get("column")
)。對象shared_ptr
存儲支持數組類型訪問,但當然shared_ptr
不支持。
我應該怎麼做shared_ptrs
,我需要延長課程嗎?C++ shared_ptr數組類型訪問
回答
最明顯的是將operator[]
添加到shared_ptr
。 這意味着定義你自己的shared_ptr重用std :: shared_ptr並讓[]運算符以你想要的方式工作。
這可以通過派生shared_ptr以快速和骯髒的方式完成(注意:shared_ptr不是多態對象,所以不要混淆std ::和你在同一個上下文中,以便你可以重用他們的接口) 。
如果你是一個球迷,「如果析構函數不是虛擬的不派生」,比它是由你來嵌入的std :: shared_ptr的在yourptr
,並重寫的shared_ptr接口yourptr
一個,委派功能你必須保留。
我希望避免重寫接口,但看到它的析構函數不是虛擬的,我想我沒有太多的選擇。出於好奇,你知道爲什麼標準庫函數不是虛擬的嗎?這是一種表演嗎? – user1520427 2012-07-23 09:07:57
因爲它們不適用於「多態性」。問題是,OOP粉絲認爲derivationm僅適用於OOP。但是,這是他們的錯,而不是誰的來源。請參閱http://stackoverflow.com/a/10478845/924727或http://stackoverflow.com/a/11202368/924727 – 2012-07-23 09:33:56
偉大的回覆,謝謝你的鏈接。 – user1520427 2012-07-23 10:08:10
- 1. 無法訪問數組返回類型
- 2. 通過類訪問C++基元數組
- 3. ARM程序集:訪問C類型的數組元素struct
- 4. 如何訪問類obect類型的訪問類對象類型的C++
- 5. 的std :: shared_ptr的Deletor類型
- 6. 通過shared_ptr訪問calloc'd數據
- 7. 訪問2013數據類型
- 8. VBA訪問數據類型
- 9. 訪問類型
- 10. C++訪問數組元素
- 11. 訪問目標C數組
- 12. C#循環訪問數組
- 13. 訪問數組類構件
- 14. 訪問類型參數的參數化類型
- 15. 無法鏈訪問的元組類型
- 16. C中的數組類型?
- 17. 訪問兩種不同類型數組的問題
- 18. C++的unordered_map的訪問值類型
- 19. 如何訪問C#MessageHeader具體類型
- 20. c#類屬性的泛型訪問
- 21. C++:帶標記類型訪問的元組
- 22. 類型數組的問題
- 23. C++超類數組尚未訪問子類方法?
- 24. 在Python中對字符數組進行類型轉換或訪問char數組
- 25. 訪問類型爲
- 26. 如何更改C++中繼承類型的訪問類型?
- 27. C++數組類的問題
- 28. SWIG:使用std :: map訪問器與shared_ptr?
- 29. 具有多種類型的類數組?如何訪問數組中的一個類型?
- 30. 類型數組
@BoBTFish:我似乎記得operator []必須是一個meber ... – 2012-07-23 08:49:52
正確,我只是堅持認爲那是第一個想法。現在我測試了一下,發現它不起作用,我刪除了這個建議。 – BoBTFish 2012-07-23 08:56:46
(* row)[「column」] – 2012-07-23 08:58:01