gpt4 book ai didi

c++ - static_cast 不起作用

转载 作者:行者123 更新时间:2023-11-28 04:40:17 24 4
gpt4 key购买 nike

我正在尝试使用 static_cast转换 uint8_t*Some_Type_T*其中 Some_Type_Tstruct .

SomeType_T* pTarget = static_cast<SomeType_T*>(pData)

这给了我一个错误

invalid static_cast from type 'uint8_t [1000] {aka unsigned char [1000]}' to type 'Some_Type_T*'

基本上我想要实现的是将缓冲区(字节数组)映射到某个结构。

我已经用类似 C 的类型转换做过很多次了。但我虽然static_cast<>更安全。

你能告诉我为什么这不起作用吗?

最佳答案

Actor 的名字是:

SomeType_T* pTarget = reinterpret_cast<SomeType_T*>(pData);

因为您打算将字节数组重新解释为另一种对象类型。

实际上继续读取内存就好像它是结构类型违反了 strict aliasing rule ,导致未定义的行为。另一个问题是,如果 pData 没有针对结构正确对齐,那么您将得到不希望的结果。

如果你的结构类型是 trivially copyable然后您可以定义一个结构并将数据 memcpy 到其中。

关于c++ - static_cast 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50320740/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com