[+i] invalid conversion from 'void*' to 'ListNode*' [-fpermissive]改正
时间: 2024-10-17 08:11:51 浏览: 45
ST-LINK Utility
在C++中遇到`[+i] invalid conversion from 'void*' to 'ListNode*' [-fpermissive]`错误通常是由于试图把`void*`类型的指针转换成`ListNode*`类型,但在某些情况下可能是类型不匹配或者是指针未正确初始化。
这个错误通常出现在动态分配的内存上,当你尝试通过`new`或`malloc`获取内存,并将其赋值给`ListNode*`类型的指针时,如果忘记或者错误地使用了`void*`。例如:
```cpp
void* ptr = new ListNode(); // 错误:未指定ListNode类型
ListNode* node = static_cast<ListNode*>(ptr); // 正确的转换方式
if (ptr != nullptr) { // 或者使用 smart pointer,如unique_ptr或shared_ptr
ListNode* node = std::unique_ptr<ListNode>(static_cast<ListNode*>(ptr)).get();
}
```
这里需要使用`static_cast`或其他转换手段明确告诉编译器你要转换的目标类型。如果你不确定`void*`的具体类型,`static_cast`可能是必要的安全选择。
阅读全文