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不允许访问其拥有指针的引用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |