c++ - 如何将 unique_ptr.get() 的引用传递给函数

标签 c++ reference c++14 unique-ptr

我有以下代码,但它报告 error: invalid initialization of non-const reference of type 'char*&' from an rvalue of type 'std::unique_ptr<char []>::pointer {aka char*}' .我想知道我是否可以通过这种方式在函数中为 unique_ptr 缓冲分配。

#include <iostream>
#include <string>
#include <memory>

void buffer_test(char* &buffer){

    buffer = new char[100];
}

int main()
{



    std::unique_ptr<char []> buffer{};

    buffer_test(buffer.get());

    std::cout << buffer[0] << std::endl;

    std::cout << "finish";
}

最佳答案

unique_ptr::get 不返回对 unique_ptr 对象中指针对象的引用。它返回指针值。您得到的是它的拷贝,而不是引用。

所以你不能将该值传递给一个函数,该函数采用对指针的非常量引用。如果你想填充 unique_ptr 的实际存储指针值,你将 *必须 * 将 unique_ptr 本身传递给 buffer_test,或者只需让 buffer_test 返回它分配的指针。

或者更好的是,让它返回一个 unique_ptr 到它分配的缓冲区。因为基本上没有理由不这样做。

关于c++ - 如何将 unique_ptr.get() 的引用传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58033797/

相关文章:

c++ - 使用元编程展开嵌套循环

c++ - 为什么在 C++14 中使用 std::bind 而不是 lambda?

c++ - 如何正确包含 Boost.Interprocess 和 Boost.DateTime?

c++ - 为双向遍历填充双向链表

C++如何创建异构容器

c++ - vector::引用

c# - 防止一种形式在传递某些数据时打开两次

c++ - 在成员引用中存储 move 的对象是否安全?

c++ - 如何在单例类中管理变量状态?

c++ - 为什么 Debug 构建失败而 Release 构建成功?