Point cloud library 点云库-编写函数以接受多种类型 静态pcl::PointCloud::Ptr extractConcaveHull( pcl::PointCloud::Ptr inputCloud, 双阿尔法 );

Point cloud library 点云库-编写函数以接受多种类型 静态pcl::PointCloud::Ptr extractConcaveHull( pcl::PointCloud::Ptr inputCloud, 双阿尔法 );,point-cloud-library,Point Cloud Library,例如,这个函数。除了编写两个函数调用,一个用于PointXYZ,一个用于PointXYZRGB,一个用于PointXYZRGBNormal,还有什么方法可以使用泛型类型?像点云对象一样,在编译时它能够相应地强制转换,这应该可以工作(我还没有测试它) 模板 静态类型名pcl::PointCloud::Ptr 提取贝壳( typename pcl::PointCloud::Ptr inputCloud, 双阿尔法 ); 您也可以通过引用传递 template<typename POINT_T

例如,这个函数。除了编写两个函数调用,一个用于PointXYZ,一个用于PointXYZRGB,一个用于PointXYZRGBNormal,还有什么方法可以使用泛型类型?像点云对象一样,在编译时它能够相应地强制转换,这应该可以工作(我还没有测试它)

模板
静态类型名pcl::PointCloud::Ptr
提取贝壳(
typename pcl::PointCloud::Ptr inputCloud,
双阿尔法
);
您也可以通过引用传递

template<typename POINT_TYPE>
static typename pcl::PointCloud<POINT_TYPE>::Ptr 
extractConcaveHull(
    typename pcl::PointCloud<POINT_TYPE>::Ptr inputCloud,
    double alpha
);
模板
静态空隙
提取贝壳(
const typename pcl::PointCloud::Ptr和inpCloud,
常量类型名pcl::PointCloud::Ptr和outCloud,
双阿尔法
);

您必须在头文件中定义模板化方法。

回答前测试
template<typename POINT_TYPE>
static typename pcl::PointCloud<POINT_TYPE>::Ptr 
extractConcaveHull(
    typename pcl::PointCloud<POINT_TYPE>::Ptr inputCloud,
    double alpha
);
template<typename POINT_TYPE>
static void 
extractConcaveHull(
    const typename pcl::PointCloud<POINT_TYPE>::Ptr& inpCloud,
    const typename pcl::PointCloud<POINT_TYPE>::Ptr& outCloud,
    double alpha
);