"Invalid co
nversion from `
void*` to `
int*`" 这个错误信息通常发生在C或C++程序中,当你试图将一个指向不确定类型(`
void*`)的数据指针
转换为一个特定类型的指针(如`
int*`),而这种
转换在编译时是不被支持的。
在
C语言中,`
void*`是一种通用指针类型,它可以指向任何类型的变量,但没有具体的类型信息。如果你尝试直接将其赋值给一个`
int*`,编译器或运行时环境无法确定其实际存储的是什么样的整数,因此这个操作是不允许的。
要正确地进行这种
转换,你需要确保你知道原始`
void*`指向的确切数据类型。一般来说,你应该先使用`re
interpret_cast`(C++)、`cast`(C99标准之后)或者其他类型安全的方法将其
转换为正确的指针类型。例如:
```cpp
// 假设ptr是一个已知为
int的
void*指针
int*
int_ptr = static_cast<
int*>(ptr);
```
或者
```c
// 如果知道sizeof(
int),也可以用memcpy
char buffer[sizeof(
int)];
memcpy(&buffer, ptr, sizeof(
int));
int*
int_ptr = (
int*)buffer;