我怎样才能在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,以便我传入该函数的云基本上得到“更新”
答案 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
将被删除。