具体代码:
process(reinterpret_cast<INT_PCM *>(view.data()), view.capacity());
// 其中view.data() 是 const unsigned char * 类型
// process函数: void process(INT_PCM* data, uint32_t size);
编译报错:
error: reinterpret_cast from 'const uint8_t *' (aka 'const unsigned char *') to 'INT_PCM *' (aka 'unsigned char *') casts away qualifiers process(const_cast<const INT_PCM *>(reinterpret_cast<INT_PCM *>(view.data())), view.capacity());
问题分析:
从报错来看就是const unsigned char *不能直接转换成unsigned char *,其实就是const类型不能直接转换非const类型
解决方法一:
process(const_cast<INT_PCM *>(reinterpret_cast<const INT_PCM *>(view.data())), view.capacity());
// process函数: void process(INT_PCM* data, uint32_t size);
其实就是先用: reinterpret_cast<const INT_PCM *>(view.data()) 把 const unsigned char * 转换成 const INT_PCM *
然后再用const_cast 把 const INT_PCM * 转换成 INT_PCM *
解决方法二:
process(reinterpret_cast<INT_PCM *>(view.data()), view.capacity());
// process函数: void process(const INT_PCM* data, uint32_t size);
就是把process函数的参数改成const类型