64 42 C:\Users\ww\Desktop\Untitled1.cpp [Error] invalid conversion from 'void*' to 'Edge*' [-fpermissive]出现错误
时间: 2024-11-30 16:20:27 浏览: 20
这个编译错误提示“invalid conversion from 'void*' to 'Edge*'”意味着你在尝试将一个空指针或者从不确定类型的内存区域转换成`Edge*`类型,这是不允许的。`void*`通常用于指向任意类型的内存,而`Edge*`是针对`Edge`结构体的指针。
在C++中,如果你是从动态分配的内存(例如`malloc()`或`new`)创建了一个`Edge`类型的对象,你需要使用`static_cast`或`reinterpret_cast`将其转换回`Edge*`类型,如下所示:
```cpp
// 假设ptr是一个从malloc或new得到的void*
Edge* edgePtr = static_cast<Edge*>(ptr); // 如果ptr确实指向Edge类型
```
或者
```cpp
Edge* edgePtr = reinterpret_cast<Edge*>(ptr); // 尽量避免这种情况,只在明确知道不会丢失精度时使用
```
如果你是在某个容器或函数返回值中接收到`void*`,需要先确认它是否真的指向`Edge`。如果是从其他函数接收的,确保该函数返回正确的类型。
检查一下你的代码,找出`void*`是如何变成`Edge*`的,并修复相应的转换。如果没有合适的上下文,我无法提供确切的解决方案。
阅读全文