gpt4 book ai didi

c++ - 不存在合适的构造函数来从 "dumb pointer"转换为 "smart pointer"

转载 作者:太空宇宙 更新时间:2023-11-04 15:27:07 26 4
gpt4 key购买 nike

struct A
{
A(int a);
};

struct B
{
B();
void b(std::shared_ptr<A> a);
};

int main()
{
A a(1);
B b;
b.b(&a);
}

所以我得到了这个错误,抱歉,我是第一次使用智能指针!!

错误:

no suitable constructor exists to convert from "A *" to "std::tr1::shared_ptr<A>"

我该如何解决这个问题!?

最佳答案

智能指针的全部意义在于拥有所有权。也就是说,负责释放它所指向的任何内容。试图告诉它管理已经由一个完全不同的系统管理的东西是没有意义的。

在您的情况下,a 已经被自动管理,为什么您还希望 由智能指针管理?即使这样做有效,您也只能设置自己将其删除两次,这是 UB。

或者给它一些东西,比如 new A(1),或者改变 b 来操作它不拥有的东西.

关于c++ - 不存在合适的构造函数来从 "dumb pointer"转换为 "smart pointer",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6132204/

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