最近,我的项目陷入了两难境地。我可以创建一个pcl :: PointCloud :: ConstPtr类型的单独对象,并向它传递一个与它相同的点云,除了可变,或者我可以尝试将可变点云投射到ConstPtr点云。我正在尝试使用const cast将可变点云转换为一种格式,在这种格式中,它只接受几个函数,这些函数只接受作为ConstPtr的pointCloud。这是我演出的演员:
pcl::visualization::PointCloudColorHandlerRGBField<pcl::PointXYZRGB> rgbHandler(const_cast<pcl::PointCloud<pcl::PointXYZRGB>::ConstPtr >(&cloud));
但在终端
中抛出错误error: const_cast to
'pcl::PointCloud<pcl::PointXYZRGB>::ConstPtr' (aka 'shared_ptr<const
PointCloud<pcl::PointXYZRGB> >'), which is not a reference,
pointer-to-object, or pointer-to-data-member
...const_cast<pcl::PointCloud<pcl::PointXYZRGB>::ConstPtr >(&cloud));
这很奇怪,因为云在这里用pcl :: PointCloud类型声明:
pcl::PointCloud<pcl::PointXYZRGB> cloud;
那为什么这个const演员没有工作呢?什么会使它发挥作用?