PCL :: PointXyz不允许使用不完整的类型

pcl::PointXYZ incomplete type not allowed

本文关键字:类型 用不完 PointXyz 不允许 PCL      更新时间:2023-10-16

我正在尝试在PCL的Kdtreeflann类上使用RADIUS搜索。因此,作为第一步,我在这里密切关注教程。但是,Visual Studio代码在抱怨,第31行不允许使用不完整的类型。由于这是PointCloud网站的确切代码,我不知道它在哪里失败。

我在Linux机器上使用PCL 1.7,GCC 5(.4,我认为)。其中似乎是通过VS代码找到的。此错误发生在汇编之前。在下面编译代码片段没有任何错误,但不幸的是,整个教程脚本的汇编失败了一些错误(不同的问题),因此我无法测试,如果行为是预期的。

我的问题:

  • "不允许不完整的类型"警告是什么?
  • 它来自哪里(在这种情况下)?
  • 如果汇编成功,是否可能导致意外行为

代码段:

1 : #include <pcl/point_cloud.h>
2 : #include <pcl/kdtree/kdtree_flann.h>
4 : #include <iostream>
5 : #include <vector>
6 : #include <ctime>
8 : int main (int argc, char** argv)
10: {
11:   srand (time (NULL));
31:   pcl::PointXYZ searchPoint;
33:   searchPoint.x = 1024.0f * rand () / (RAND_MAX + 1.0f);
34:   searchPoint.y = 1024.0f * rand () / (RAND_MAX + 1.0f);
35:   searchPoint.z = 1024.0f * rand () / (RAND_MAX + 1.0f);

81:   return 0;
82: }

需要完全定义用于建筑物的链接阶段才能成功。您的程序使该类型不完全定义,因为您拥有的#include语句只有对pcl::PointXYZ的远期引用。

对于完整的定义,您需要#include <pcl/point_types.h>