我不了解点云库中.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。我找不到此代码背后的原理。
谢谢!
答案 0 :(得分:2)
请注意,只有.h是头文件,一个是包含定义的文件,一个应该包含的文件。
hpp和cpp文件中都有实现。
template<class T>
template<pcl::PointXYZ>
.h和.hpp文件都可以合并在同一文件中,但更清楚地将它们分开。