闪亮的马路 发表于 2020-11-26 10:04:14

关于构造函数问题

在.h中定义了指针
class PointCloudYZ
{
private:
   pcl::PointCloud<pcl::PointXYZ>::Ptr cloud;
   pcl::search::Search<pcl::PointXYZ>::Ptr tree;
   pcl::PointCloud <pcl::Normal>::Ptr normals;
}
然后在.c的构造函数中,申请内存
PointCloudYZ::PointCloudYZ(void)
{
   pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
   pcl::search::Search<pcl::PointXYZ>::Ptr tree(new pcl::search::KdTree<pcl::PointXYZ>);
   pcl::PointCloud <pcl::Normal>::Ptr normals(new pcl::PointCloud <pcl::Normal>);
}

在main中使用cloud,为什么会报错;
if ( pcl::io::loadPCDFile <pcl::PointXYZ> (path, *cloud) == -1)
   {
      std::cout << "Cloud reading failed." << std::endl;
      return (-1);
   }
应该怎么使用呢

xieglt 发表于 2020-11-26 10:21:02

这看不出什么问题,需要完整代码或者类定义、main函数的完整代码。

闪亮的马路 发表于 2020-11-26 10:25:36

本帖最后由 闪亮的马路 于 2020-11-26 10:51 编辑

报的错误是说cloud没有初始化

pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
   pcl::search::Search<pcl::PointXYZ>::Ptr tree(new pcl::search::KdTree<pcl::PointXYZ>);
   pcl::PointCloud <pcl::Normal>::Ptr normals(new pcl::PointCloud <pcl::Normal>);

以上不是已经初始化了吗?

闪亮的马路 发表于 2020-11-26 12:38:55

问题找到了
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
   pcl::search::Search<pcl::PointXYZ>::Ptr tree(new pcl::search::KdTree<pcl::PointXYZ>);
   pcl::PointCloud <pcl::Normal>::Ptr normals(new pcl::PointCloud <pcl::Normal>);
修改为
cloud = pcl::PointCloud<pcl::PointXYZ>::Ptr(new pcl::PointCloud<pcl::PointXYZ>);
tree = pcl::search::Search<pcl::PointXYZ>::Ptr(new pcl::search::KdTree<pcl::PointXYZ>);
normals = pcl::PointCloud <pcl::Normal>::Ptr(new pcl::PointCloud <pcl::Normal>);

闪亮的马路 发表于 2020-11-26 12:39:47

xieglt 发表于 2020-11-26 10:21
这看不出什么问题,需要完整代码或者类定义、main函数的完整代码。

问题已经解决,所以给你个最佳吧!
页: [1]
查看完整版本: 关于构造函数问题