不允许使用pcl :: PointXYZ不完整类型

时间:2017-09-11 14:56:35

标签: c++ visual-studio-code intellisense point-cloud-library

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

我在Linux机器上使用PCL 1.7,GCC 5(.4,我认为)。这些包含似乎是由VS Code发现的。编译前发生此错误。编译下面的代码片段没有错误,但遗憾的是整个教程脚本的编译失败了一些错误(不同的问题),所以我无法测试,如果行为符合预期。

我的问题:

  • 什么是“不完整类型不允许”警告暗示?
  • 它来自哪里(在这种情况下)?
  • 如果编译成功,是否可能导致意外行为(即这只是VS Code / IntelliSense的问题)?

代码段:

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: }

1 个答案:

答案 0 :(得分:0)

需要完全定义类型才能使构建的链接阶段成功。您的程序保留了未完全定义的类型,因为您拥有#include语句,只有pcl::PointXYZ的前向引用。

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