我不得不更改函数getData()
的原型,这基本上是一个遗留源代码。在将其更改为退回char*
之后,如下所示,由于static_cast
,我开始收到编译错误。我的问题是,使用reinterpret_cast
是否安全,而不是{{1 }}?
static_cast
是否有比reinterpret_cast更好的解决方案?
答案 0 :(得分:3)
你可以static_cast
从void *
到任何指针类型,或者指向相关类型的指针,当一个冥想来自另一个时。
reinterpret_cast
旨在用于指向不相关类型的指针之间。相当于static_cast
从第一个类型到void *
,后跟static_cast
从void *
到第二个类型。它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;在你的情况下。