使用const_cast

时间:2016-08-26 05:20:37

标签: c++ pointers casting const point-cloud-library

最近,我的项目陷入了两难境地。我可以创建一个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演员没有工作呢?什么会使它发挥作用?

0 个答案:

没有答案