【发布时间】:2019-11-12 22:29:10
【问题描述】:
我不明白点云库中 .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。我找不到这段代码背后的理由。
谢谢!
【问题讨论】:
-
在您引用的内容之后,他们提供了 .h .hpp 和 .cpp 文件中内容的详细示例。你读过它吗?请同时参考并尝试更好地解释您不理解的内容。目前,我很想简单地发布您引用后的文字作为答案......
-
模板定义不能进入源代码,但有时将它们与声明分开是一个好主意,我认为这就是要解释的全部内容。见这里stackoverflow.com/questions/495021/…
-
您正在查看的类 (kmeans) 不是模板,因此不需要 .hpp
-
@foreknownas_463035818 谢谢,您的最后评论澄清了我的困惑。抱歉我的问题有点愚蠢,但我是 C++ 新手。
标签: c++ header-files point-cloud-library