Compile error : cast void * failed in C/C++

Compile error : cast void * failed in C/C++

我想编译一个我知道有效的项目。

所以我创建了一个 Makefile 来编译它,但是当我编译它时出现了这个错误:

invalid conversion from ‘void*’ to ‘LIMITOR_3DSL_Limitor_32f* {aka LIMITOR_3DSL_Limitor_32f_tag*}’ [-fpermissive]
*ppStatus = ippMalloc(sizeof(LIMITOR_3DSL_Limitor_32f));
                                                      ^

很奇怪怎么一个 void* 不能被施放? 编译器可能是问题所在吗?我正在使用 g++

与 C++ 中的 C 相反,您不能将 void * 类型的指针分配给任何其他类型的指针,因为这样的分配是不安全的。您必须使用 C 或 C++ 形式的转换将指针显式转换为所需的类型。

例如

LIMITOR_3DSL_Limitor_32f *ppStatus = ( LIMITOR_3DSL_Limitor_32f * )ippMalloc( sizeof(LIMITOR_3DSL_Limitor_32f ) );

LIMITOR_3DSL_Limitor_32f *ppStatus = static_cast<LIMITOR_3DSL_Limitor_32f*>( ippMalloc(sizeof(LIMITOR_3DSL_Limitor_32f ) ) );

LIMITOR_3DSL_Limitor_32f* ppStatus = (LIMITOR_3DSL_Limitor_32f*)ippMalloc(sizeof(LIMITOR_3DSL_Limitor_32f));

在C/C++中我们应该显式转换类型。 ippMalloc 将 return 一个 void * 指针,所以我们应该将它从 void * 转换为 LIMITOR_3DSL_Limitor_32f*