Casting a const void*

Casting a const void*

本文关键字:void const Casting      更新时间:2023-10-16

我具有返回const void*的函数,我想将其信息用作char*。我可以将其施加为C-Style file作为(char *)variable,但是当我尝试使用reinterpret_cast(例如reinterpret_cast<char *>(variable)(时,我会收到汇编错误。

我应该使用其他铸造方法吗?

const void *p;
void *q = const_cast<void *>(p);
char *r = static_cast<char *>(q);

第一个演员将摆脱const并产生void *

第二个演员更改数据类型并产生char *

在此处阅读有关不同的C 铸造

reinterpret_cast<const char*>(variable)或,如果您真的确定您可以忽略const预选赛,则const_cast<char*>(reinterpret_cast<const char*>(variable))

使用reinterpret_cast<char*>()进行简单类型不是一个好主意。使用const char *new_variable = static_cast<const char*>(variable)

删除const也是一个坏主意。如果您确定返回的内存是可写的,则可以使用const_cast<char*>(new_variable)