对char *指针进行reinterpret_cast

时间:2018-05-07 14:52:57

标签: c++

我不得不更改函数getData()的原型,这基本上是一个遗留源代码。在将其更改为退回char*之后,如下所示,由于static_cast,我开始收到编译错误。我的问题是,使用reinterpret_cast是否安全,而不是{{1 }}?

static_cast

是否有比reinterpret_cast更好的解决方案?

2 个答案:

答案 0 :(得分:3)

你可以static_castvoid *到任何指针类型,或者指向相关类型的指针,当一个冥想来自另一个时。

reinterpret_cast旨在用于指向不相关类型的指针之间。相当于static_cast从第一个类型到void *,后跟static_castvoid *到第二个类型。它T和U是不相关的类型:

U *u = ...;
T *t;

t = reinterpret_cast<T *>(u);  /* strictly the same as would be
t = static_cast<T *>(static_cast<void *>(u));  */

答案 1 :(得分:0)

这取决于你想要完成的事情。如果您只想使用data的按位表示形式,并将每个元素解释为unsigned char,那么就可以使用reinterpret_cast

您的问题并没有给我们足够的详细信息来确定它是否安全&#34;在你的情况下。