Разница между файлами .h, .hpp, .cpp в PCL - PullRequest
0 голосов
/ 02 июля 2019

Я не понимаю разницы между файлами .h, .hpp и .cpp в библиотеке облака точек. Здесь - пример с двусторонним фильтром, говорят, что:

  • include / pcl / filters / двусторонний. H - будет содержать все определения;
  • include / pcl / filters / impl / двусторонний. Hpp - будет содержать шаблонные реализации;
  • src /носторонний.cpp - будет содержать явные экземпляры шаблона.

Я понимаю общую концепцию заголовочного файла и его реализации, но почему существует два заголовочных файла? В чем разница между шаблонной реализацией и явным созданием шаблона?

В данный момент я работаю с классом Kmeans, и .hpp не используется, вместо этого они просто имеют реализацию в .cpp файле , и они включают в себя .h файл . Зачем? Более того, в файле kmeans.h они дают реализацию некоторых открытых функций-членов, а не только сеттеров и геттеров. Я не могу найти обоснование этого кода.

Спасибо!

1 Ответ

2 голосов
/ 02 июля 2019

Учтите, что только заголовочный файл является .h, тот, который содержит определения, и тот, который вы должны включить.

Реализации находятся в файлах hpp и cpp.

  • hpp: содержит общие шаблоны template<class T>,
  • cpp: содержит не шаблонные функции или явные экземпляры template<pcl::PointXYZ>

Оба файла .h и .hpp могут бытьобъединены в одном файле, но яснее их разделить.

...