我有一个返回const void*
的函数,我想将其信息用作char*
。我可以将其C样式转换为(char *)variable
,但是当我尝试使用reinterpret_cast
之类的reinterpret_cast<char *>(variable)
时,我会收到编译错误。
我应该使用不同的铸造方法吗?
答案 0 :(得分:1)
const void *p;
void *q = const_cast<void *>(p);
char *r = static_cast<char *>(q);
第一个演员摆脱const并产生void *
第二个演员表会更改数据类型并产生char *
了解不同的C ++演员here
答案 1 :(得分:0)
reinterpret_cast<const char*>(variable)
或者,如果您确实可以忽略const
限定符,const_cast<char*>(reinterpret_cast<const char*>(variable))
。
答案 2 :(得分:0)
将reinterpret_cast<char*>()
用于简单类型并不是一个好主意。使用const char *new_variable = static_cast<const char*>(variable)
。
删除const
也是一个坏主意。如果您完全确定返回的内存是可写的,则可以使用const_cast<char*>(new_variable)
。