Arrays 通过唯一的ptr<;int[]>;函数
我想要什么Arrays 通过唯一的ptr<;int[]>;函数,arrays,function,c++11,pointers,unique-ptr,Arrays,Function,C++11,Pointers,Unique Ptr,我想要什么 std::cout << "newCopy: "; for(int i = 0; i < SIZE + 1; i++) { std::cout << newCopy[i] << ' '; } std::cout 尝试调用printary时(newCopy,SIZE+1)我得到编译器错误无法将参数'1'的'std::unique_ptr'转换为'int*'到'void printary(int*,int)' 这是因为您试图将std::
std::cout << "newCopy: ";
for(int i = 0; i < SIZE + 1; i++)
{
std::cout << newCopy[i] << ' ';
}
std::cout
尝试调用printary时(newCopy,SIZE+1)代码>我得到编译器错误无法将参数'1'的'std::unique_ptr'转换为'int*'到'void printary(int*,int)'
这是因为您试图将std::unique_ptr
对象传递到一个函数中,该函数需要int*
。但是std::unique_ptr
是与int*
不同的类型,并且不能隐式转换
解决方案:您应该传递一个int*
。std::unique_ptr
只是裸指针的包装器。如果您查看std::unique\u ptr
的文档,就会发现它有一个成员函数std::unique\u ptr::get
返回指向托管对象的指针
std::cout << "newCopy: ";
for(int i = 0; i < SIZE + 1; i++)
{
std::cout << newCopy[i] << ' ';
}
std::cout << "newCopy: ";
printArray(newCopy, SIZE + 1);