Я не понимаю разницы между файлами .h, .hpp и .cpp в библиотеке облаков точек. Вот пример с двусторонним фильтром, говорят что:
- include/pcl/filters/bilateral.h — будут содержать все определения;
- include/pcl/filters/impl/bilateral.hpp — будет содержать шаблонные реализации;
- src/bilateral.cpp — будет содержать явные экземпляры шаблона.
Я понимаю общую концепцию заголовочного файла и реализации, но почему существует два заголовочных файла? В чем разница между реализацией шаблона и явным созданием экземпляра шаблона?
В данный момент я работаю с классом Kmeans, и .hpp не используется, вместо этого у них просто есть реализация в .cpp и включают файл .h. Почему? Более того, в файле kmeans.h они дают реализацию некоторых публичных функций-членов, а не только сеттеров и геттеров. Я не могу найти обоснование этого кода.
Спасибо!
ml
, из которого взят KMeans, является одним из наиболее экспериментальных в библиотеке, поэтому не удивляйтесь, если обнаружите ситуации, нарушающие соглашение, установленное в руководствах. - person Sérgio Agostinho   schedule 04.07.2019