我有以下代码,但它报告 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/