[Error] invalid conversion from 'void*' to 'int*' [-fpermissive]以上代码报错
时间: 2024-10-18 13:18:58 浏览: 58
浅谈const变量赋值报错分析
此错误信息提示你在C/C++代码中尝试将void指针(通常用于通用指针,指向不确定类型的内存地址)转换成int指针,但在某些编译器选项下(如-fpermissive),这种转换是不允许的,因为它们默认禁止从void*到非void类型的直接转换。
例如,以下代码可能导致此类错误:
```cpp
void* ptr; // 声明一个void指针
int* int_ptr = static_cast<int*>(ptr); // 这里会报错,因为试图将void*转换为int*
```
要解决这个问题,你需要明确你知道void指针指向的内容的确是一个int值。如果你确实有一个void指针指向了一个int,你应该先确保转换是安全的,例如:
```cpp
void* ptr = static_cast<void*>(42); // 假设ptr指向的是一个整数
if (sizeof(*ptr) == sizeof(int)) {
int* int_ptr = static_cast<int*>(ptr);
// 现在int_ptr指向了正确的int值
}
```
或者如果void*是从函数返回,且预期是某种类型的指针,需要进行正确的类型检查或动态分配:
```cpp
void* func_returning_int();
...
int* int_ptr = dynamic_cast<int*>(func_returning_int());
```
阅读全文