错误:来自' unsigned char *'的无效转换到'const签名char *'

时间:2016-09-30 15:31:55

标签: c++ c++11 casting

uint8_t* buf1;
...
const signed char* buf2 = static_cast<const signed char*>(buf1);
  

来自类型&#39; uint8_t * {aka unsigned char *}&#39;的static_cast无效输入   &#39; const签名char *&#39;

c-style-cast :( const signed char *)工作正常

在这种情况下使用c-style-cast与static_cast有危险吗?

1 个答案:

答案 0 :(得分:1)

  

在这种情况下使用c-style-cast与static_cast有危险吗?

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

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