c++ - 如何从 flatbuffers 中获取 union 结构的 void* 值反序列化的大小

标签 c++ flatbuffers

我正在使用 FlatBuffers 反序列化包含 union 结构的数据

struct ReqMsgUnion {
  ReqMsg type;
  void *value;
}

架构:

 table Request {
        seq_no: uint = 0;                          
        msg: ReqMsg (required);
    }

现在我想使用 memcopy() 来复制 'value',但是我无法获得正确的 'value' 大小,因为里面有一些 '\0'(如果我没记错的话)。 我在网上搜索,找到了“在模式中添加一个dataLength”之类的方法,但我想知道是否还有其他更好的想法。 谢谢!

最佳答案

没有办法void* 中提取它指向​​的对象的大小(也不是它的实际 类型)。该信息(如果需要)必须以其他方式明确包含。<​​/p>

尽量不要在 C++ 中首先使用 void*

关于c++ - 如何从 flatbuffers 中获取 union 结构的 void* 值反序列化的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57449984/

相关文章:

c++ - 错误 : expected unqualified-id before 'bool'

c++ - 在不重新创建整个 FlatBuffers 的情况下使用(非对象)C++ API 时改变表数组

rust - 如何将 FlatBuffers 对象添加到新对象?

grpc - 我们如何将 gRPC 与 Flatbuffers 一起使用?

c++ - 网络延迟和Application-> ProcessMessages()

c++ - 将 int 转换为 char* 时出现奇怪的输出

c++ - 获得通用引用的优势,无需通用引用

c++ - 返回类型中 && 和 no ref 的区别

c++ - union 中的 Flatbuffers 结构不起作用 (C++)

c# - FlatBuffers:C++ 编码与 C# 编码,C# 解码端到端示例