簡體   English   中英

為什么 std::vector::iterator::operator-> 只向下鑽取一層?

[英]Why does std::vector::iterator::operator-> only drill down one level?

此代碼無法編譯:

void foo(vector<unique_ptr<pair<int, int>>> bar)
{
    bar.begin()->first;
}

這里有什么問題? 不應該operator->向下鑽取直到pair嗎?

不應該operator->向下鑽取直到pair嗎?

operator ->的遞歸僅在您獲得指針類型之前有效。 一旦發生這種情況,遞歸就會停止,您可以訪問該指針指向的內容。 在這種情況下, std::vector::iterator::operator->返回一個unique_ptr<pair<int, int>>*作為向量中元素的指針類型。 一旦你點擊了那個指針,你就只能訪問unique_ptr的成員,而不是它指向的pair<int, int>

你可以得到你想要的使用

(*bar.begin())->first;

所以現在您使用的是operator-> of unique_ptr<pair<int, int>>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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