使用std::shared_ptr的等价代码是什么?


int main() {
std::deque<My_Int*> table;
My_Int* table_entry = new My_Int(2);
table.push_back (table_entry);
My_Int** new_obj = &table.front();
*new_obj = new My_Int(3); 

std::cout << table.front()->data << std::endl; // prints 3 as intended
}

我主要对双指针行感到困惑。我如何使用智能指针来复制这一点呢?谢谢你的帮助。(我知道代码没有做适当的清理)

编辑:只是为了澄清,当使用智能指针时,deque也将是shared_pointer的deque。

int main() {
std::deque<std::shared_ptr<My_Int>> table;
table.push_back (std::make_shared<My_Int>(2));
std::shared_ptr<My_Int> &new_obj = table.front();
new_obj = std::make_shared<My_Int>(3);
std::cout << table.front()->data << std::endl;
}

这是我从yyyy的答案中想出的解决方案。我从来没见过&操作符不能在声明shared_ptr时使用,但我认为它是有意义的。

如果有人能解释一下&算子在这种情况下工作,对我来说仍然有点困惑。由于

最新更新