簡體   English   中英

unique_ptr 擁有的 object 的索引運算符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM