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