我有一个 const uint8_t*
,需要转换为一个接口期望的 char*
。
最简单的方法是使用 C 风格的强制类型转换:
const uint8_t* aptr = &some_buffer;
char* bptr = (char*)aptr;
然而,我们内部的样式指南(基于Google C++ Style Guide)禁止使用C风格强制类型转换。另一个选项是这个丑陋的代码,我觉得很难读懂:
char *cptr = reinterpret_cast<char*>(const_cast<uint8_t*>(aptr));
我尝试了其他选项,但都无法编译:
char* dptr = reinterpret_cast<char*>(aptr);
char* eptr = const_cast<char*>(aptr);
char* fptr = static_cast<char*>(aptr);
有没有一种方法可以使用C++风格的转换来执行此转换,而不必嵌套两个单独的转换操作?
char*
但实际上不会修改其内容(接口设计者本应添加一个const
,但我无法更改)。 - Kerrick Staleyconst
,这意味着如果您认为需要使用const_cast
来使用标准库功能,则说明您在某个地方犯了一个大错误。 - François Andrieux