Boost指针PCL,用新指针更新旧指针并删除新指针

时间:2015-10-26 06:34:23

标签: c++ boost

我怎样才能在Boost中执行上述操作?我正在使用PCL库,我有这样的功能:

void pcl_helper_functions::performRangeThresholding(
    pcl::PointCloud<pcl::PointXYZRGB>::Ptr inputCloud,
    std::string axis, double startRange, double endRange
){
    pcl::PointCloud<pcl::PointXYZRGB>::Ptr rangedCloud(new pcl::PointCloud<pcl::PointXYZRGB>);
    pcl::PassThrough<pcl::PointXYZRGB> passthroughFilter;
    passthroughFilter.setInputCloud(inputCloud);
    passthroughFilter.setFilterFieldName(axis);
    passthroughFilter.setFilterLimits(startRange, endRange);
    passthroughFilter.filter(*rangedCloud);
    inputCloud = rangedCloud;
    // return rangedCloud;
}

我想将inputCloud(我传入的那个)设置/复制到rangedCloud,然后删除rangedCloud,以便我传入该函数的云基本上得到“更新”

1 个答案:

答案 0 :(得分:1)

通过引用传递:

void pcl_helper_functions::performRangeThresholding(
    pcl::PointCloud<pcl::PointXYZRGB>::Ptr& inputCloud,
    std::string axis, double startRange, double endRange
){
    pcl::PointCloud<pcl::PointXYZRGB>::Ptr rangedCloud(new pcl::PointCloud<pcl::PointXYZRGB>);
    pcl::PassThrough<pcl::PointXYZRGB> passthroughFilter;
    passthroughFilter.setInputCloud(inputCloud);
    passthroughFilter.setFilterFieldName(axis);
    passthroughFilter.setFilterLimits(startRange, endRange);
    passthroughFilter.filter(*rangedCloud);
    inputCloud = rangedCloud;
}
一旦最后一次引用发布(它是一个共享指针),

inputCloud将被删除。