PCL错误:‘int64_t‘不是一个类型

66 篇文章 ¥59.90 ¥99.00
本文介绍了在使用PCL库时遇到'int64_t'不是一个类型错误的原因及解决方案。错误源于'int64_t'并非PCL库内定义的类型,而应使用PCL提供的或类型。通过修正类型,可以避免此类错误并正确处理点云数据。

在编程中,经常会遇到各种类型错误。本文将讨论一个常见的错误,即PCL中的’int64_t’不是一个类型的错误。我们将解释这个错误的原因,并提供一个例子来说明如何解决它。

PCL(Point Cloud Library)是一个广泛使用的开源库,用于处理和分析点云数据。它提供了许多用于点云处理的功能和数据结构。在使用PCL时,你可能会遇到类型错误,其中一个常见的错误是关于’int64_t’类型的问题。

'int64_t’是一个定义在C++标准库中的整数类型,用于表示带符号的64位整数。它通常在需要处理大整数值时使用。然而,‘int64_t’并不是PCL库中定义的类型,因此当你在使用PCL时,如果错误地使用’int64_t’,编译器将会报告此错误。

要解决这个错误,你需要使用PCL库中提供的正确的类型来替代’int64_t’。例如,如果你需要使用64位整数类型,你可以使用PCL库中的pcl::int64_tpcl::uint64_t类型,它们分别用于有符号和无符号的64位整数。

下面是一个示例代码,展示了如何在PCL中使用正确的64位整数类型:

#include <pcl/common/common.h>

/usr/include/c++/9/bits/predefined_ops.h:283:11: error: no match for call to ‘(pcl::getFieldIndex(const string&, const std::vector<pcl::PCLPointField>&) [with PointT = pcl::PointXYZL; std::string = std::__cxx11::basic_string<char>]::<lambda(const int&)>) (const pcl::PCLPointField&)’ 283 | { return bool(_M_pred(*__it)); } | ^~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/pcl-1.10/pcl/common/io.h:586, from /usr/include/pcl-1.10/pcl/io/file_io.h:41, from /usr/include/pcl-1.10/pcl/io/pcd_io.h:44, from /home/wzz/shenlan/slambook/ch5/joinMap/joinMap.cpp:9: /usr/include/pcl-1.10/pcl/common/impl/io.hpp:73:7: note: candidate:pcl::getFieldIndex(const string&, const std::vector<pcl::PCLPointField>&) [with PointT = pcl::PointXYZL; std::string = std::__cxx11::basic_string<char>]::<lambda(const int&)>’ 73 | [&field_name](const auto& field) { return field.name == field_name; }); | ^ /usr/include/pcl-1.10/pcl/common/impl/io.hpp:73:7: note: no known conversion for argument 1 from ‘const pcl::PCLPointField’ to ‘const int&’ In file included from /usr/include/c++/9/bits/stl_algobase.h:71, from /usr/include/c++/9/bits/char_traits.h:39, from /usr/include/c++/9/ios:40, from /usr/include/c++/9/ostream:38, from /usr/include/c++/9/iostream:39, from /home/wzz/shenlan/slambook/ch5/joinMap/joinMap.cpp:1: /usr/include/c++/9/bits/predefined_ops.h: In instantiation of ‘bool __gnu_cxx::__ops::_Iter_pred<_Predicate>::operator()(_Iterator) [with _Iterator = __gnu_cxx::__normal_iterator<const pcl::PCLPointField*, std::vector<pcl::PCLPointField> >; _Predicate = pcl::getFieldIndex(const string&, const std::vector<pcl::PCLPointField>&) [with PointT = pcl::PointXYZ; std::string = std::__cxx11::basic_string<char>]::<lambda(const int&)>]’: /usr/include/c++/9/bits/stl_algo.h:120:14: required from ‘_RandomAccessIterator std::__find_if(_RandomAccessIterator, _RandomAccessIterator, _Predicate, std::random_access_iterator_tag) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<const pcl::PCLPointField*, std::vector<pcl::PCLPointField> >; _Predicate = __gnu_cxx::__ops::_Iter_pred<pcl::getFieldIndex(const string&, const std::vector<pcl::PCLPointField>&) [with PointT = pcl::PointXYZ; std::string = std::__cxx11::basic_string<char>]::<lambda(const int&)> >]’ /usr/include/c++/9/bits/stl_algo.h:161:23: required from ‘_Iterator std::__find_if(_Iterator, _Iterator, _Predicate) [with _Iterator = __gnu_cxx::__normal_iterator<const pcl::PCLPointField*, std::vector<pcl::PCLPointField> >; _Predicate = __gnu_cxx::__ops::_Iter_pred<pcl::getFieldIndex(const string&, const std::vector<pcl::PCLPointField>&) [with PointT = pcl::PointXYZ; std::string = std::__cxx11::basic_string<char>]::<lambda(const int&)> >]’ /usr/include/c++/9/bits/stl_algo.h:3969:28: required from ‘_IIter std::find_if(_IIter, _IIter, _Predicate) [with _IIter = __gnu_cxx::__normal_iterator<const pcl::PCLPointField*, std::vector<pcl::PCLPointField> >; _Predicate = pcl::getFieldIndex(const string&, const std::vector<pcl::PCLPointField>&) [with PointT = pcl::PointXYZ; std::string = std::__cxx11::basic_string<char>]::<lambda(const int&)>]’ /usr/include/pcl-1.10/pcl/common/impl/io.hpp:72:35: required from ‘int pcl::getFieldIndex(const string&, const std::vector<pcl::PCLPointField>&) [with PointT = pcl::PointXYZ; std::string = std::__cxx11::basic_string<char>]’ /usr/include/pcl-1.10/pcl/common/impl/io.hpp:64:37: required from ‘int pcl::getFieldIndex(const string&, std::vector<pcl::PCLPointField>&) [with PointT = pcl::PointXYZ; std::string = std::__cxx11::basic_string<char>]’ /usr/include/pcl-1.10/pcl/visualization/impl/point_cloud_color_handlers.hpp:114:43: required from ‘void pcl::visualization::PointCloudColorHandlerRGBField<PointT>::setInputCloud(const PointCloudConstPtr&) [with PointT = pcl::PointXYZ; pcl::visualization::PointCloudColorHandlerRGBField<PointT>::PointCloudConstPtr = boost::shared_ptr<const pcl::PointCloud<pcl::PointXYZ> >]’ /usr/include/pcl-1.10/pcl/visualization/point_cloud_color_handlers.h:287:11: required from ‘pcl::visualization::PointCloudColorHandlerRGBField<PointT>::PointCloudColorHandlerRGBField(const PointCloudConstPtr&) [with PointT = pcl::PointXYZ; pcl::visualization::PointCloudColorHandlerRGBField<PointT>::PointCloudConstPtr = boost::shared_ptr<const pcl::PointCloud<pcl::PointXYZ> >]’ /usr/include/pcl-1.10/pcl/visualization/impl/pcl_visualizer.hpp:100:44: required from ‘bool pcl::visualization::PCLVisualizer::addPointCloud(const typename pcl::PointCloud<PointT>::ConstPtr&, const pcl::visualization::PointCloudGeometryHandler<PointT>&, const string&, int) [with PointT = pcl::PointXYZ; typename pcl::PointCloud<PointT>::ConstPtr = boost::shared_ptr<const pcl::PointCloud<pcl::PointXYZ> >; std::string = std::__cxx11::basic_string<char>]’ /usr/include/pcl-1.10/pcl/visualization/impl/pcl_visualizer.hpp:82:72: required from ‘bool pcl::visualization::PCLVisualizer::addPointCloud(const typename pcl::PointCloud<PointT>::ConstPtr&, const string&, int) [with PointT = pcl::PointXYZ; typename pcl::PointCloud<PointT>::ConstPtr = boost::shared_ptr<const pcl::PointCloud<pcl::PointXYZ> >; std::string = std::__cxx11::basic_string<char>]’ /usr/include/pcl-1.10/pcl/visualization/pcl_visualizer.h:867:68: required from here /usr/include/c++/9/bits/predefined_ops.h:283:11: error: no match for call to ‘(pcl::getFieldIndex(const string&, const std::vector<pcl::PCLPointField>&) [with PointT = pcl::PointXYZ; std::string = std::__cxx11::basic_string<char>]::<lambda(const int&)>) (const pcl::PCLPointField&)’ 283 | { return bool(_M_pred(*__it)); } | ^~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/pcl-1.10/pcl/common/io.h:586, from /usr/include/pcl-1.10/pcl/io/file_io.h:41, from /usr/include/pcl-1.10/pcl/io/pcd_io.h:44, from /home/wzz/shenlan/slambook/ch5/joinMap/joinMap.cpp:9: /usr/include/pcl-1.10/pcl/common/impl/io.hpp:73:7: note: candidate:pcl::getFieldIndex(const string&, const std::vector<pcl::PCLPointField>&) [with PointT = pcl::PointXYZ; std::string = std::__cxx11::basic_string<char>]::<lambda(const int&)>’ 73 | [&field_name](const auto& field) { return field.name == field_name; }); | ^ /usr/include/pcl-1.10/pcl/common/impl/io.hpp:73:7: note: no known conversion for argument 1 from ‘const pcl::PCLPointField’ to ‘const int&’ make[2]: *** [CMakeFiles/joinMap.dir/build.make:63:CMakeFiles/joinMap.dir/joinMap.cpp.o] 错误 1 make[1]: *** [CMakeFiles/Makefile2:76:CMakeFiles/joinMap.dir/all] 错误 2 make: *** [Makefile:84:all] 错误 2
09-16
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值