【发布时间】:2009-05-27 00:57:36
【问题描述】:
基本上我想要做的是,根据某些变量,将 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*) 或类似的东西)?如果不清楚,我深表歉意,任何帮助将不胜感激。
【问题讨论】:
-
为什么不一边做演员一边做测试? if (temp==32) index = (uint32*)ptr; //等等
-
是的,这是显而易见的方式,但如果我这样做,我将需要数百个 if...else。 if(temp==32)i = someArray[*index32];否则 if(temp==16)i = someArray[*index16];等等。我希望有一些简单的方法可以做到这一点,如上所述。
-
您还需要数百个 if/else?
-
我很抱歉,在我要做的程序中,它需要数百个。这就是我试图找到解决方案的原因。
标签: c++ casting void-pointers