赋值给std::shared_ptr成员变量

Assigning to a std::shared_ptr member variable

本文关键字:ptr 成员 变量 shared std 赋值      更新时间:2023-10-16

我有一个类foo,其成员bar类型为std::shared_ptr<int>:

class foo
{
    std::shared_ptr<int> bar;
    /*other stuff here*/
};

在该类中,我想将new int分配给bar。但是我不能写bar = new int();,因为指针没有公共赋值操作符。

我应该怎么做?我可以std::movestd::swap,但这两个似乎都不对。

bar = std::make_shared<int>();是一种方法,特别是当您希望保留赋值操作符的可跟踪性时。

您可以使用reset:

bar.reset(new int());

这将delete当前内容(如果有的话),并设置内部指针为new表达式返回的值。