gpt4 book ai didi

c++ - 尝试创建 unique_ptr 时出现错误 C2664

转载 作者:太空狗 更新时间:2023-10-29 21:34:05 35 4
gpt4 key购买 nike

我试图找出我在我的项目中遇到的问题,我已将其简化为生成 C2664 错误的这一小段代码。我不明白错误信息,谁能帮我理解?我用谷歌搜索,并浏览了 2 本 C++ 书籍,这段代码正是其中列出的内容,但它对我不起作用。

谢谢。

#include <memory>

struct A
{
int b;
};

int main(int argc, char ** argv)
{
A a;

std::unique_ptr<A> a_ptr = std::make_unique<A>(new A);

return 0;
}

这里是错误:

1>------ Build started: Project: Project1, Configuration: Debug Win32 ------
1>main.cpp
1>c:\program files (x86)\microsoft visual studio\2017\community\vc\tools\msvc\14.12.25827\include\memory(2585): error C2664: 'A::A(const A &)': cannot convert argument 1 from 'A *' to 'A &&'
1>c:\program files (x86)\microsoft visual studio\2017\community\vc\tools\msvc\14.12.25827\include\memory(2584): note: Reason: cannot convert from 'A *' to 'A'
1>c:\program files (x86)\microsoft visual studio\2017\community\vc\tools\msvc\14.12.25827\include\memory(2584): note: No constructor could take the source type, or constructor overload resolution was ambiguous
1>d:\users\aksel\documents\visual studio 2017\projects\project1\project1\main.cpp(21): note: see reference to function template instantiation 'std::unique_ptr<A,std::default_delete<_Ty>> std::make_unique<A,A*,0>(A *&&)' being compiled
1> with
1> [
1> _Ty=A
1> ]
1>Done building project "Project1.vcxproj" -- FAILED.
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

最佳答案

make_unique 的参数是 T 构造函数的参数,而不是指向 T 实例的指针,如果您已经有一个指向 T 的指针,则只需使用常规的 unique_ptr 构造函数。

关于c++ - 尝试创建 unique_ptr 时出现错误 C2664,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48257972/

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