![](/img/trans.png)
[英]Is having a reference/ptr to std::unique_ptr<> owned object safe when the unique_ptr is in a vector?
[英]Indexing operator of an object owned by unique_ptr
我正在研究 c++ 項目。 我需要放入一個 std::vector 不同的類。 我發現( 單個向量中的不同類的對象? )可以通過創建具有通用類型的類然后將指針指向向量來做到這一點。 在這種情況下,我可以將指針轉換為我需要的類型。 這對我來說很清楚。
還提到原則上不僅可以使用指針,還可以使用 smart_pointers,即std::vector<std::unique_ptr<TMyClass>>
。 這就是我的問題開始的地方。 TMyClass
具有索引運算符( operator[]
)。
可以說我有std::vector<std::unique_ptr<TMyClass>> A
。 我嘗試訪問TMyClass
object 的元素,例如A[0][0]
或A[0].get()[0]
或(A[0])[0]
但是當我編譯時出現錯誤:
[bcc64 錯誤] 類型“value_type”(又名“std::unique_ptr<.....>”)不提供下標運算符
如何告訴編譯器第二個索引與TMyClass
object 相關而不是unique_ptr
? 如果有人向我解釋如何在這種情況下訪問元素,我將不勝感激。
您需要先提取指針
A[0] //type: std::unique_ptr<TMyClass>&
然后從該指針(pointee)中提取 object
*A[0] //type: TMyClass&
然后你可以在這個 object 上使用你的重載運算符
(*A[0])[0]
必須取消引用指針。 所以,我猜是(*A[0])[0]
或
。 不好看,但這是給你的指針A[0]->[0]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.