error: invalid conversion from ‘char**’ to ‘int’ [-fpermissive] ros::init(argv,argv,"hello");
时间: 2024-04-30 20:19:14 浏览: 19
这个错误提示是因为 `ros::init()` 函数需要传入 `int` 类型的参数,而你传入的是 `char**` 类型的参数,导致类型不匹配。
在 ROS 中,`ros::init()` 函数需要传入三个参数,分别是节点名称、命令行参数数量和命令行参数数组。因此你需要将 `char**` 类型的命令行参数数组转换为 `int` 类型的参数数量,然后再传入 `ros::init()` 函数中。
你可以使用 `argc` 参数来获取命令行参数数量,例如:
```
ros::init(argc, argv, "hello");
```
这样就可以将命令行参数数量传入 `ros::init()` 函数中了。
相关问题
error: invalid conversion from ‘char*’ to ‘unsigned char*’ [-fpermissive]
这个错误是因为你在将一个 char 指针转换为 unsigned char 指针时没有进行强制类型转换。在 C++ 中,char 和 unsigned char 是不同的类型,它们之间的转换需要显式地进行类型转换。
例如,如果你的代码是这样的:
```c++
char* str = "hello";
unsigned char* ustr = str;
```
你需要将第二行改为:
```c++
unsigned char* ustr = reinterpret_cast<unsigned char*>(str);
```
这样就可以将 char 指针转换为 unsigned char 指针了。请注意,这种转换可能会导致未定义的行为,因为它假设 char 数组中的每个元素都可以安全地转换为 unsigned char 类型。
修改error: invalid conversion from ‘char**’ to ‘int’
这个错误是因为你将一个指向指针的指针(char**)赋值给了一个整型(int)。你需要将其转换为正确的类型。
例如,如果你想将一个指向字符串的指针数组赋值给一个整型变量,你可以使用数组的第一个元素的地址,如下所示:
```
char* strArr[] = {"Hello", "World", "!"};
int num = (int)(strArr[0]);
```
这样,num就会包含字符串 "Hello" 的地址,而不是整个字符串数组的地址。