c++ - 根据数据转换 void 指针 (C++)

标签 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)];

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/

相关文章:

c++ - 对在Boost.statechart中完成的所有正交状态使用react

c++ - 如何限制 CUDA 中的 GPU 内存大小?

C编程中void指针的概念

c++ - 在 C++ 中放松 void * 转换

c++ - 读取/写入 void* 变量的单个字节

c++ - 访问 typedef 映射结构中的成员?

c++ - 从结构创建二进制 block

java - 创建并填充类 T 或从 T 扩展的对象的属性,无需重复代码

java - 泛型继承多个接口(interface)

C 转换为 void 指针时可能溢出