这是我的代码
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;
}
我的目标是在不放弃所有权的情况下访问唯一指针。
我的问题是,如果我通过引用返回并使用 vector 指针捕获引用的地址,它会起作用吗?
我知道通过引用接收会更好,但我正在尝试找出是否可以通过指针接收。
最佳答案
开始于:
std::vector<std::unique_ptr<int>> * oi
1) 解引用指针:
*oi;
2) 访问 vector 的第一个元素:
(*oi)[0];
3) 访问 unique_ptr
指向的 int:
*((*oi)[0]);
以上应该可行,但我认为这不是一个好的解决方案。当需要这样的解决方案时,设计几乎总是有问题。
关于c++ - 通过引用返回 unique_ptr 的 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30562839/