声明unique_ptr后如何为其赋值?

Aqu*_*irl 9 c++ pointers smart-pointers unique-ptr

#include <iostream>\n#include <memory> // unique_ptr\n\nusing namespace std;\n\nint main()\n{\n    std::unique_ptr<char*> char_ptr;\n\n    char_ptr = (char*)"anisha";\n    return 0;\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

我想为代码中其他地方的 unique_ptr 分配一些值。
\n这会出现以下错误:char_ptr = (char*)"anisha";

\n\n
error: no match for \xe2\x80\x98operator=\xe2\x80\x99 (operand types are \xe2\x80\x98std::unique_ptr<char*>\xe2\x80\x99 and \xe2\x80\x98char*\xe2\x80\x99)\n     char_ptr = (char*)"anisha";\n
Run Code Online (Sandbox Code Playgroud)\n\n

unique_ptr声明后如何给其赋值?

\n

小智 4

使用 std::make_unique。这是编辑您的代码 -

#include <iostream>
#include <memory> // unique_ptr

using namespace std;

int main()
{
    std::unique_ptr<char*> char_ptr;

    //char_ptr = (char*)"anisha";
    char_ptr = std::make_unique<char*>((char*)"anisha");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)