0

PCL의 KdTreefLANN 클래스에서 반지름 검색을 사용하려고합니다. 그래서 첫 걸음으로 나는 here 자습서를 자세히 읽었습니다. 그러나 Visual Studio 코드는 불완전한 유형이 31 행에 허용되지 않는다고 불평하고 있습니다.이 점은 PointCloud 웹 사이트의 정확한 코드이므로 어디에서 실패하는지 알 수 없습니다.pcl :: PointXYZ 불완전 유형이 허용되지 않음

Linux 머신에서 PCL 1.7, GCC 5 (.4, 내가 생각하기에)를 사용하고 있습니다. 포함 사항은 VS 코드에서 찾을 수 있습니다. 컴파일하기 전에이 오류가 발생합니다. 아래의 코드 조각을 컴파일하면 오류없이 작동하지만 불행히도 전체 자습서 스크립트를 컴파일 할 때 오류가 발생하여 (다른 문제) 실패 할 수 있으므로 문제가 예상대로 발생하는지 테스트 할 수 없습니다.

내 질문 :

은 "불완전한 유형이 허용되지 않습니다"무엇
  • 경고가 암시?
  • (이 경우) 어디에서 왔습니까?
  • 그럼에도 불구하고 컴파일이 성공하더라도 예기치 않은 동작이 발생할 수 있습니까 (예 : VS 코드/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

어떤 줄이 31 줄입니까? 정확한 * 컴파일러 출력은 무엇입니까? – cdhowie

+0

죄송합니다. 링크의 예제에서 줄 번호를 입력했습니다. 이제 어느 선이 31인지 분명해야합니다. – niak

답변

0

유형은 완전히 성공 구축의 연결 단계에 대해 정의 될 필요가있다. #include 문은 pcl::PointXYZ에 대한 참조 만 가지고 있기 때문에 프로그램에서 형식을 불완전하게 정의합니다.

전체 정의를 보려면 #include <pcl/point_types.h>

+0

연결 단계조차도 아닙니다. 컴파일러는'searchPoint'에 할당 할 공간의 양이나 x/y/z 멤버의 존재 여부, 타입 등을 알지 못하기 때문에 컴파일 단계가 성공할 수 없습니다. – cdhowie

+0

고맙지 만'point_types. h "불행히도 현상을 변경하지 않습니다 (적어도 나를 위해). 또한 튜토리얼의 코드이기 때문에 거기에 모두 포함시켜야합니까? 당연히 실수 일 수 있지만 누군가가 알아 차렸을 것입니다. 'point_types.hpp' 파일을 열 때, VS 코드는'struct _PointXYZ' (태그 종류의 공용체가 클래스의 정의와 호환되지 않습니다)와'EIGEN_ALIGN16'의 정의에서 에러를 봅니다. Eigen의'Macros.h'에서'__CUDACC__'가 정의되지 않았다면 추측은 정의 될 수 없습니다). – niak

관련 문제