2016-09-30 84 views
0
uint8_t* buf1; 
... 
const signed char* buf2 = static_cast<const signed char*>(buf1); 

invalid static_cast from type 'uint8_t* {aka unsigned char*}' to type 'const signed char*'错误:从“无符号字符*”无效转换“常量符号字符*”

C风格的铸造:(常量符号字符*)工作正常

有没有用c任何危险-style-cast vs static_cast在这种情况下?

+0

那么,定义*“危险”*。它*是*合法的。 –

+0

static_cast错误提示这不是安全操作,为什么static_cast失败? –

+0

,因为你需要'reinterpret_cast' –

回答

0

Is there any danger using c-style-cast vs static_cast in this case?

static_cast在这种情况下根本就不是一个选项,正如错误信息所解释的那样。

使用c-style转换的危险在于,您可能无意执行reinterpret_cast,这是c-style转换在此处执行的操作。如果您打算执行reinterpret_cast,请使用reinterpret_cast。如果你打算使用static_cast,那么你的逻辑是错误的,因为这些类型与static_cast不兼容。