加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 之后填充std :: unique_ptr

发布时间:2020-12-16 09:59:23 所属栏目:百科 来源:网络整理
导读:我有一个函数,它获取指针指针,并填入值: void GetSensor(Sensor **sensor); 通常,我必须这样做来创建传感器并释放它: Sensor *sensor;GetSensor(sensor);// Do something with the sensordelete sensor; 现在我想使用std :: unique_ptr执行相同的任务.我知
我有一个函数,它获取指针指针,并填入值:

void GetSensor(Sensor **sensor);

通常,我必须这样做来创建传感器并释放它:

Sensor *sensor;
GetSensor(&sensor);
// Do something with the sensor
delete sensor;

现在我想使用std :: unique_ptr执行相同的任务.我知道我可以这样做:

std::unique_ptr<Sensor> safe_sensor;
Sensor *sensor;
GetSensor(&sensor);
safe_sensor.reset(sensor);
// Do something with the sensor
// safe_sensor will free the sensor pointer

我可以以某种方式避免使用临时传感器变量的步骤吗?这会有用吗?

std::unique_ptr<Sensor> safe_sensor;
GetSensor(&safe_sensor.get());
// Do something with the sensor
// Will the free work correctly here?

解决方法

最简单的方法是将代码包装到函数中:

std::unique_ptr<Sensor> make_safe_sensor()
{
    Sensor *sensor;
    GetSensor(&sensor);
    return std::unique_ptr<Sensor>(sensor);
}

std :: unique_ptr不允许访问其拥有指针的引用.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读