invalid conversion from 'int' to 'node*' [-fpermissive]
时间: 2023-04-10 14:03:24 浏览: 467
这个错误提示表明在代码中将一个整数类型的值转换为了指向节点类型的指针,这是不被允许的。可能需要检查代码中的类型转换和指针操作,以确保类型匹配和指针的正确使用。如果需要更具体的帮助,请提供更多的代码细节。
相关问题
[Error] invalid conversion from void* to char** [-fpermissive]
这个错误通常是由于将 `void*` 类型的指针直接赋值给 `char**` 类型的指针导致的。因为 `void*` 类型的指针可以指向任何类型的数据,而 `char**` 类型的指针只能指向 `char*` 类型的指针。
要解决这个问题,你需要先将 `void*` 类型的指针转换为 `char*` 类型的指针,然后再将其赋值给 `char**` 类型的指针。例如:
```c++
void* data = get_data();
char* char_data = static_cast<char*>(data);
char** char_ptr = &char_data;
```
这样就可以将 `void*` 类型的指针 `data` 转换为 `char**` 类型的指针 `char_ptr` 了。注意,这里使用了 `static_cast` 进行类型转换,如果你不确定类型转换是否安全,可以使用 `dynamic_cast` 进行安全的类型转换。
pthread_create invalid conversion from int to void*
这个问题可能是因为 `pthread_create` 函数的第三个参数需要传入一个 `void*` 类型的指针,但是你传入了一个 `int` 类型的值。
解决方法是将 `int` 类型的值转换成 `void*` 类型,然后再传入函数中。可以使用 C 语言中的类型转换操作符 `(void*)`,如下所示:
```
int arg = 123;
pthread_create(&thread_id, NULL, my_thread_function, (void*)arg);
```
在线程函数中,需要将参数再转换回 `int` 类型,如下所示:
```
void* my_thread_function(void* arg) {
int my_arg = (int)arg;
// do something with my_arg
}
```
注意,这种方法只适用于传递简单类型的参数,如果需要传递复杂的数据结构,建议使用指针。