vde*_*ris -1 c++ reference smart-pointers shared-ptr c++11
我想从参考更新智能指针。
shared_ptr<My_Toy> my_toy_ptr;
// Something...
void update(shared_ptr<My_Toy> my_toy_ptr, My_Toy& toy){
my_toy_ptr = &toy;
}
Run Code Online (Sandbox Code Playgroud)
...但是他的代码产生了错误。
我该怎么做?
不要将堆栈分配对象的地址传递给std::shared_ptr
。toy
将在其作用域的尽头被破坏,并且std::shared_ptr
将尝试进行delete
某些非new
d的操作。由a持有的地址std::shared_ptr
必须是动态分配的对象的地址(尽管可以提供自定义删除器,但此处不是这种情况)。
更改a std::shared_ptr
管理的对象std::shared_ptr::reset()
。