如何在c ++中将void*转换为float(*)[3]?

use*_*385 2 c++ casting

这是代码段.

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));
Run Code Online (Sandbox Code Playgroud)

当我在visual c ++中编译此代码时,它返回错误"无法从void*转换为float(*)[3]".

我想知道如何将void*转换为float(*顶点)[3];

Kon*_*lph 8

vertices指向3元素数组的指针float.要从一种指针类型转换为另一种指针类型,通常使用static_cast:

void* result = lib3ds_util_realloc_array(
    mesh->vertices, mesh->nvertices, nvertices, 3 * sizeof(float));
mesh-vertices = static_cast<float (*)[3]>(result);
Run Code Online (Sandbox Code Playgroud)