PCL中的.h,.hpp,.cpp文件之间的区别

时间:2019-07-02 09:47:43

标签: c++ header-files point-cloud-library

我不了解点云库中.h,.hpp和.cpp文件之间的区别。 Here是带有双边过滤器的示例,他们说:

  
      
  • include / pcl / filters / bilateral.h-将包含所有定义;
  •   
  • include / pcl / filters / impl / bilateral.hpp-将包含模板化的实现;
  •   
  • src / bilateral.cpp-将包含显式模板实例。
  •   

我了解头文件和实现的一般概念,但是为什么会有两个头文件?模板化实现和显式模板实例化之间有什么区别?

此刻,我正在使用Kmeans类,并且不使用.hpp,相反,它们仅在.cpp file中具有实现,并且包括.h file。为什么?此外,在kmeans.h文件中,它们提供了一些公共成员函数的实现,而不仅仅是setter和getter。我找不到此代码背后的原理。

谢谢!

1 个答案:

答案 0 :(得分:2)

请注意,只有.h是头文件,一个是包含定义的文件,一个应该包含的文件。

hpp和cpp文件中都有实现。

  • hpp:包含通用模板template<class T>
  • cpp:包含非模板函数或显式实例template<pcl::PointXYZ>

.h和.hpp文件都可以合并在同一文件中,但更清楚地将它们分开。