基本上,我想做的是,根据某些变量,将 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)];
C++ 中是否有任何东西可以做这样的事情(因为你实际上不能将变量分配为 (uint32*) 或类似的东西)?如果不清楚,我深表歉意,我们将不胜感激。
最佳答案
“正确”的方式:
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)]
[更新:修复了愚蠢的拼写错误]
关于c++ - 根据数据转换 void 指针 (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/913505/