转换void指针,取决于数据(C++)

Joe*_*oel 0 c++ casting void-pointers

基本上我想要做的是,根据一些变量,将void指针转换为不同的数据类型.例如('cast'变量只是为了得到我的观点):

void* ptr = some data;
int temp = some data;
int i = 0;

...

if(temp == 32)      cast = (uint32*)
else if(temp == 16) cast = (uint16*)
else                cast = (uint8*)

i = someArray[*((cast)ptr)];
Run Code Online (Sandbox Code Playgroud)

C++中有什么东西可以做这样的事情(因为你实际上不能将变量分配给(uint32*)或类似的东西)?如果不清楚我会道歉,任何帮助将不胜感激.

Jam*_*ran 5

"正确"的方式:

union MyUnion
{
     uint32 asUint32;
     uint16 asUint16;
     uint8 asUint8;
}

uint32 to_index(int size, MyUnion* ptr) 
{  
    if (size== 32) return ptr->asUint32;  
    if (size== 16) return ptr->asUint16;
    if (size== 8) return ptr->asUint8;  
}

i = someArray[to_index(temp,ptr)]
Run Code Online (Sandbox Code Playgroud)

[更新:修复哑巴错误]