簡體   English   中英

通過引用返回一個unique_ptr向量

[英]Returning a vector of unique_ptr by reference

這是我的代碼

class Carl{
    public:
    std::vector<std::unique_ptr<int>> asd;
    Carl(){
        asd.push_back(std::unique_ptr<int>(new int(4)));
        asd.push_back(std::unique_ptr<int>(new int(2)));
    }

    std::vector<std::unique_ptr<int>> & getVec(){
        return asd;
    }
};



int main(int argc, char** argv) {
    Carl v; 
    std::vector<std::unique_ptr<int>> * oi = &(v.getVec());

    //how to print first element?
    return 0;
}

我的目標是訪問不放棄所有權的唯一指針。

我的問題是,如果我按引用返回並使用向量指針捕獲引用的地址,它將起作用嗎?

我知道按引用接收會更好,但是我試圖找出是否可以通過指針接收。

是的,此代碼完全有效:

std::vector<std::unique_ptr<int>> * oi = &(v.getVec());

這也不必要地造成混亂。 現在,如果要訪問第一個元素,則必須鍵入(*oi)[0] 而如果您使用引用,則只需鍵入oi[0]

當您想要第一個int *(*oi)[0]*oi[0]時,多余的輸入變得更令人討厭。

從...開始:

std::vector<std::unique_ptr<int>> * oi

1)取消引用指針:

*oi;

2)訪問向量的第一個元素:

(*oi)[0];

3)訪問unique_ptr指向的int:

*((*oi)[0]);

上面的應該起作用,但是我認為這不是一個好的解決方案。 當似乎需要這樣的解決方案時,設計總是存在一些問題。

暫無
暫無

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

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