invalid conversion from ‘void*’ to ‘node*’[-fpermissive]报错怎么解决
时间: 2024-09-09 20:00:54 浏览: 113
invalid conversion from type1 to type2 (解决方案).md
这个错误是C++编程中的类型转换问题。在C++中,`void*` 是一种特殊的指针类型,它可以指向任何类型的数据,但它没有具体的类型信息。而 `node*` 是一个特定类型的指针,指向 `node` 类型的数据。当你尝试将一个 `void*` 类型的指针直接赋值给 `node*` 类型的指针时,编译器会因为类型不匹配而报错。
要解决这个错误,你需要进行显式的类型转换,将 `void*` 指针转换为 `node*` 指针。可以使用 `static_cast` 进行转换,这是一种安全的类型转换方式,它会在编译时检查类型兼容性。下面是一个示例:
```cpp
void* generalPointer;
// 假设我们有一个node类型的对象
node someNode;
// 假设我们已经把someNode的地址赋给了generalPointer
generalPointer = &someNode;
// 现在我们要将generalPointer转换为node*类型
node* specificPointer = static_cast<node*>(generalPointer);
// 现在specificPointer指向的是someNode对象
```
使用 `static_cast` 之前,请确保 `void*` 指针确实指向的是 `node` 类型的对象。如果不是,那么类型转换的结果将是未定义的行为,可能会导致运行时错误。
阅读全文