gpt4 book ai didi

c++ - 在 C++ 中以通用的可移植方式识别类型

转载 作者:太空狗 更新时间:2023-10-29 21:46:34 24 4
gpt4 key购买 nike

有没有办法以通用且可移植的方式识别类型以进行序列化?我知道 std::type_indexstd::type_info 是平台相关的,不能用于序列化。

一种方法是在 std::type_index 和一个“类型信息”之间建立映射并序列化“类型信息”,但这会减慢序列化速度。

有什么标准的方法可以做到这一点吗?

PS:我想学习如何进行高效的序列化,我不想使用库。

最佳答案

如果你想将你的对象从一个进程传递到另一个进程,而这些进程恰好在不同的时间和不同的机器上运行,那么你正在查看的消息序列化

那里有高效的消息传递库:Google 的 Protobuf或 Apache 的 Thrift都是很好的例子。

关键思想是将消息的定义外部化,使其与平台(和编译器)无关,然后从该定义生成代码绑定(bind)。然后,您将从您的代码在内存中创建消息,序列化该消息 (xml/json/binary),然后在另一个平台上将该消息反序列化为另一个内存中表示形式。

如果它感觉像是一个补充步骤,那确实是。另一方面,这意味着消息格式不再与内部实现(间接层......)相关联,因此您可以随意更改内部实现,同时仍然能够读/写消息在各种版本中(例如,用于与程序的旧部署版本进行交互)。

关于c++ - 在 C++ 中以通用的可移植方式识别类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14787971/

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