c++ - 通过引用返回 unique_ptr 的 vector

标签 c++

这是我的代码

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/

相关文章:

c++ - 当一个函数有一个特定大小的数组参数时,为什么用指针替换它?

c++ - 窗口未在 Qt 中呈现

c++ - _mm_load_ps 导致段错误

c++ - 通用成员函数定义

c++ - recv()/send()(在 Socket 中)或 read()/write()(在 CFile 中)错误

C++ Utility将长switch语句转换为封装switch case阶梯的简洁函数调用

c++ - 是否可以将子进程的标准输出重定向到父进程中的另一个文件?

c++ - 格式化包含引号的字符串

c++ - Windows fnmatch 替代品

c++ - 我如何在 gtkmm3 中动态命名小部件变量?