我有用于存储点云指针的向量:
std::vector<pcl::PointCloud<PointType>::Ptr> List;
在循环中,我正在尝试push_back点云指针。
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
while(condition)
{...
List.push_back(cloud);
cloud->clear();
}
它添加了点云,但在每次迭代时,先前存储在向量中的所有值都将被新添加的值替换。
让我们说我添加的最后一个点云的大小是400,我在迭代中添加了5个点云。
在循环之后,如果我检查存储的5个云的大小,结果将是 400 400 400 400 400
有没有人知道如何修复它?
由于
答案 0 :(得分:4)
看起来非常像你只创建一个点云,并且在你的循环的每次迭代中,你修改点云,向它添加一个(另一个)指向它的指针,然后重复。
换句话说,所有矢量条目都指向同一个云,因此每个修改当然都可以在所有条目中看到。
答案 1 :(得分:0)
不是一遍又一遍地重复使用你的cloud
变量,这是你问题的根源,我会切断中间人
while(condition)
{ ...
List.emplace_back(new pcl::PointCloud<pcl::PointXYZ>);
}