无法从“void *”转换为“Flight *” 1> 从“void*”到指向非“void”的指针的转换要求显式类型转换
时间: 2023-08-04 12:05:59 浏览: 158
动态数组实现(所有代码均使用C语言回调函数实现及存储数据均使用void*、void**实现)
这个错误通常是在代码中使用了类型强制转换时出现的。在C语言中,void指针可以用来表示任何类型的指针,但是需要进行类型转换才能使用它所指向的具体类型。
例如,如果您有一个void指针指向一个Flight结构体,您需要在使用它之前把它转换成Flight指针类型,如下所示:
```
void* ptr;
Flight* flight;
// 转换void指针为Flight指针
flight = (Flight*)ptr;
// 然后可以使用flight指针访问Flight结构体的成员
flight->flightNumber = 1234;
```
在第二行代码中,我们使用了类型强制转换将ptr指针转换为Flight指针类型。这样就可以使用flight指针来访问Flight结构体的成员了。
请注意,虽然类型转换可以解决该错误,但是在进行类型转换时需要谨慎。如果转换的类型不正确,可能会导致程序出现未定义的行为,例如访问未分配的内存或者访问无效的指针。
阅读全文