施放const void *

时间:2018-02-14 03:24:01

标签: c++

我有一个返回const void*的函数,我想将其信息用作char*。我可以将其C样式转换为(char *)variable,但是当我尝试使用reinterpret_cast之类的reinterpret_cast<char *>(variable)时,我会收到编译错误。

我应该使用不同的铸造方法吗?

3 个答案:

答案 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)