如何从const char *转换为struct?

时间:2014-05-08 20:35:05

标签: c++ qt struct casting

在开发嵌入式Linux的Qt应用程序(真正欢迎性能改进)的过程中,我遇到了从一组字符转换为给定结构的必要性。直到现在,这是用代码完成的:

MyStruct* const my_struct = reinterpret_cast< MyStruct* >(qbytearray.data());

data()是Qt类QByteArray的成员,它将字节数组转换为char*。在这样做时,很难,它会对数据进行深层复制,但鉴于额外的处理效果并不好。由于我只想读取数据(结构化的结构永远不会用于编辑),因此替代方法QByteArray::constData()更可取,因为它不会进行深层复制,但相反会返回{{ 1}}而不是const char*

问题是:我现在应该如何进行施法?我尝试使用const_cast但没有成功。

char*

MyStruct* const my_struct = const_cast< MyStruct* >(qbytearray.constData()); // compile error const MyStruct* const my_struct = const_cast< MyStruct* >(qbytearray.constData()); // compile error 也没有效果,因为&#34;它会抛弃限定符&#34;,这是预期的。我能够做到这一点的最接近的方式是首先投射到reinterpret_cast,然后投射到结构:

char*

但我觉得这不仅仅是&#34;绕着&#34;问题,但从MyStruct* const my_struct = (MyStruct*)const_cast< char* >(qbytearray.constData()); char*的铸造最终将牺牲我所希望的加工改进。

那么如何正确投射?

1 个答案:

答案 0 :(得分:3)

这与const_cast无关。你不是要试图抛弃const - ness。

const MyStruct* my_struct = reinterpret_cast<const MyStruct* >(qbytearray.constData());