gpt4 book ai didi

c++ - 这个 unique_ptr 的初始化有什么问题?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:07:09 25 4
gpt4 key购买 nike

有人能告诉我,unique_ptr 的以下初始化有什么问题吗?

int main()
{
unique_ptr<int> py(nullptr);
py = new int;
....
}

g++ -O2 xxx.cc -lm -o xxx -std=c++11 说:

error: no match for ‘operator=’ (operand types are    ‘std::unique_ptr<int>’ and ‘int*’)
py = new int;
^

unique_ptr<int> px(new int);

工作得很好。

最佳答案

两段代码的初始化都很好,unique_ptrconstructors对于 nullptr 和裸指针。

第一个片段中失败的是赋值,那是因为 unique_ptr 没有 operator=接受裸指针作为其右侧的重载。不过它确实接受另一个 unique_ptr,因此您可以这样做:

py = unique_ptr<int>{new int};
py = std::make_unique<int>(); // Since c++14

或者您可以查看 reset它也接受裸指针并且或多或少具有相同的含义:

py.reset(new int);

关于c++ - 这个 unique_ptr 的初始化有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28853309/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com