PCL 中的 .h、.hpp、.cpp 文件之间的差异
Difference between .h, .hpp, .cpp files in PCL
我不明白点云库中的 .h、.hpp 和 .cpp 文件之间的区别。 Here 是双边过滤器的一个例子,他们说:
- include/pcl/filters/bilateral.h - will contain all definitions;
- include/pcl/filters/impl/bilateral.hpp - will contain the templated implementations;
- src/bilateral.cpp - will contain the explicit template instantiations.
头文件的大致概念和实现我都明白了,但是为什么会有两个头文件呢?模板化实现和显式模板实例化有什么区别?
此刻我正在使用 Kmeans class 并且没有使用 .hpp,相反它们只是在 .cpp file and they include an .h file 中实现。为什么?此外,在 kmeans.h 文件中,他们给出了一些 public 成员函数的实现,而不仅仅是 setter 和 getter。我找不到这段代码背后的基本原理。
谢谢!
考虑到只有 .h 是头文件,一个包含定义的文件和一个您应该包含的文件。
实现在 hpp 和 cpp 文件中。
- hpp:包含通用模板
template<class T>
、
- cpp: 包含非模板函数或显式实例化
template<pcl::PointXYZ>
.h 和.hpp 文件可以合并到同一个文件中,但将它们分开会更清楚。
我不明白点云库中的 .h、.hpp 和 .cpp 文件之间的区别。 Here 是双边过滤器的一个例子,他们说:
- include/pcl/filters/bilateral.h - will contain all definitions;
- include/pcl/filters/impl/bilateral.hpp - will contain the templated implementations;
- src/bilateral.cpp - will contain the explicit template instantiations.
头文件的大致概念和实现我都明白了,但是为什么会有两个头文件呢?模板化实现和显式模板实例化有什么区别?
此刻我正在使用 Kmeans class 并且没有使用 .hpp,相反它们只是在 .cpp file and they include an .h file 中实现。为什么?此外,在 kmeans.h 文件中,他们给出了一些 public 成员函数的实现,而不仅仅是 setter 和 getter。我找不到这段代码背后的基本原理。
谢谢!
考虑到只有 .h 是头文件,一个包含定义的文件和一个您应该包含的文件。
实现在 hpp 和 cpp 文件中。
- hpp:包含通用模板
template<class T>
、 - cpp: 包含非模板函数或显式实例化
template<pcl::PointXYZ>
.h 和.hpp 文件可以合并到同一个文件中,但将它们分开会更清楚。