У меня, как мне кажется, довольно простой вопрос о преобразовании библиотеки облаков точек из собственного типа данных в float.Я думаю, что моя проблема связана с отсутствием опыта работы с шаблонами, типами данных и C ++ в целом.
Функция, которая должна выполнять это преобразование: copyToFloatArray , определенная в документации как:
virtual void pcl :: DefaultPointRepresentation :: copyToFloatArray (const FPFHSignature33 & p, float * out
) const [встроенный, виртуальный]
Копировать данные точки из точки вводав массив с плавающей точкой.
Этот метод должен быть переопределен во всех подклассах.
Параметры:
p Точка ввода
out Указатель на число с плавающей точкоймассив.
Реализует pcl :: PointRepresentation .
Я попытался реализовать его следующим образом:
pcl::PointCloud<pcl::FPFHSignature33>::Ptr fpfhs (new pcl::PointCloud<pcl::FPFHSignature33> ());
// populate fpfh...
float **myArray;
pcl::DefaultPointRepresentation< pcl::FPFHSignature33 >::copyToFloatArray ( &fpfhs, &**myArray);
Ошибка, возникающая приВремя компиляции выглядит следующим образом:
/home/bc/PCL/pcd_read.cpp: In function ‘int main(int, char**)’:
/home/bc/PCL/pcd_read.cpp:68: error: no matching function for call to
‘pcl::DefaultPointRepresentation<pcl::FPFHSignature33>::copyToFloatArray(boost::shared_ptr<pcl::PointCloud<pcl::FPFHSignature33> >*, float*)’
/usr/include/pcl-1.2/pcl/point_representation.h:254: note: candidates are:
virtual void pcl::DefaultPointRepresentation<pcl::FPFHSignature33>::copyToFloatArray(const pcl::FPFHSignature33&, float*) const
make[2]: *** [CMakeFiles/pcd_read.dir/pcd_read.cpp.o] Error 1
make[1]: *** [CMakeFiles/pcd_read.dir/all] Error 2
make: *** [all] Error 2
Похоже, что проблема в первом аргументе, передаваемом функции, но я не могу создать объект const FPFHSignature33 & p
.
Кто-нибудь есть идеи, если эти подозрения верны, и если да, то в каком направлении я могу пойти, чтобы начать решать проблему?
Спасибо за любую помощь.