我想从引用更新智能指针。
shared_ptr<My_Toy> my_toy_ptr;
// Something...
void update(shared_ptr<My_Toy> my_toy_ptr, My_Toy& toy){
my_toy_ptr = &toy;
}
...但是他的代码会产生错误。
我该怎么做这个操作?
我想从引用更新智能指针。
shared_ptr<My_Toy> my_toy_ptr;
// Something...
void update(shared_ptr<My_Toy> my_toy_ptr, My_Toy& toy){
my_toy_ptr = &toy;
}
...但是他的代码会产生错误。
我该怎么做这个操作?
不要将堆栈分配对象的地址传递给std::shared_ptr
. toy
将在其范围结束时被破坏,并且std::shared_ptr
将尝试delete
一些不是new
d. a 持有的地址std::shared_ptr
必须是动态分配的对象的地址(虽然可以提供自定义删除器,但这里不是这样)。
std::shared_ptr
要更改 a正在管理的对象,请使用std::shared_ptr::reset()
.