我有工会
union Data
{
uint8_t * utf8;
uint16_t * utf16;
uint32_t * utf32;
};
和变量Data data;
如何将data
投射到void*
?联合大小等于任何指针的大小,因为它只包含指针。那么为什么我不能像(void*)data
答案 0 :(得分:1)
你无法将object
投射到void*
,但你可以将它指向void *
,如下所示:
Data d;
void * d_ptr = (void *) &d;
再次获取对象:
Data &d2 = * (Data *) d_ptr;
Data *d3 = (Data *)d_ptr;
答案 1 :(得分:0)
我找到了解决方案:
union Data
{
uint8_t * utf8;
uint16_t * utf16;
uint32_t * utf32;
void* raw;
};
当我返回data.raw它应该给结果相同(但没有编译错误)为(void*) data
(?)。
答案 2 :(得分:-1)
您可以使用static_cast
来使用显式强制转换foreach (var entry in entries)
{
var en = entry;
var result = DoSomeAction(o => o.Action(en));
}