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某些非newd的操作。由a持有的地址std::shared_ptr 必须是动态分配的对象的地址(尽管可以提供自定义删除器,但此处不是这种情况)。
更改a std::shared_ptr管理的对象std::shared_ptr::reset()。
| 归档时间: |
|
| 查看次数: |
352 次 |
| 最近记录: |