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*)或类似的东西)?如果不清楚我会道歉,任何帮助将不胜感激.
"正确"的方式:
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)
[更新:修复哑巴错误]
| 归档时间: |
|
| 查看次数: |
7851 次 |
| 最近记录: |