这是代码段。
typedef struct Lib3dsMesh {
//..
float (*vertices)[3];
//..
}
void* lib3ds_util_realloc_array(void *ptr, int old_size, int new_size, int element_size) {
// Do something here.
return ptr;
}
mesh->vertices = lib3ds_util_realloc_array(mesh->vertices, mesh->nvertices, nvertices, 3 * sizeof(float));
当我在visual c ++中编译此代码时,它返回错误“无法从void *转换为float(*)[3]”。
我想知道如何将void *转换为float(* vertices)[3];
答案 0 :(得分:8)
vertices
是pointer to a 3-element array of float
。要从一种指针类型转换为另一种指针类型,通常使用static_cast
:
void* result = lib3ds_util_realloc_array(
mesh->vertices, mesh->nvertices, nvertices, 3 * sizeof(float));
mesh-vertices = static_cast<float (*)[3]>(result);