问题描述
使用ROS getParam函数时,在launch文件中定义了“distance”变量,并在main函数中国调用了getParam函数来获取变量值。结果出现如下报错:
no matching function for call to ‘ros::NodeHandle::getParam(int, double&)’
nh_.getParam('distance',back_up_dist);
问题分析
报错给了一个提示,说无法将int型转化为string型,顺着这个提示,发现原来是自己写getParam函数的参数时用了单引号,而C++中单引号是字符型,所以’distance’的用法是错误的。
解决方案
把单引号换成双引号就好了。
在C++中,单引号是字符,而双引号是字符串!!!
单引号引起的一个字符实际上代表一个整数。
双引号引起的字符串,代表的却是一个指向无名数组起始字符的指针。该数组会被双引号之间的字符以及一个额外的二进制为零的字符 ‘\0’ 初始化。
比如说: ”a" 是 “a\0”,以’\0’结尾。而‘a’单单表示a这个字符。
QAQ竟然在基础知识上犯错