一个未知对象的序列化
Serialization of an unknown object
我一直在寻找能够序列化完全未知对象的东西。
我知道Qt有一个序列化功能,也适用于qvariant对象。这是否意味着我可以将任何复杂的对象传递给QVariant(即也有指针和/或指针循环的东西)并序列化该对象?
序列化似乎也不支持boost::any。
由于c++中缺乏反射,如果不编写自己的特定类型序列化例程,这是不可能的吗?
您可以序列化任何QVariant
,只要您期望QVariant
所携带的所有类型都定义了它们的QDataStream
操作符。对于你自己的自定义类型,你需要有这些操作符然后它就能正常工作了
是的,不编写自己的序列化代码是不可能做到这一点的,因为c++没有反射。
虽然c++没有反射,但如果您使用QObjects和Qt属性系统,则有可能在Qt中获得有限的反射。
编写代码来序列化和反序列化任何QObject的所有属性是相当容易的。[提示:有一些方法可以检索QObject的所有属性。这里的权衡是,你希望序列化的所有东西都必须是一个QObject(并且QObject不能有复制构造函数),并且你的getter和setter必须使用属性。使用一些聪明的宏,从编码的角度来看,这不是太大的问题。
相关文章:
- 自定义对象的dlib序列化在gcc中失败
- 提升反序列化对象具有 nan 或 -nan 值
- 在 cpp 中的平面缓冲区中序列化对象
- 将 boost 序列化对象的 asio::streambuf 表示转换为 Beast 的 DynamicBody req.body()
- POCO C++对象到 JSON 字符串序列化
- C++ 提升 - 包含类层次结构对象的类的序列化
- 从一个文件中读取多个序列化对象
- 在对象序列化期间添加额外参数是否有更好的方法?
- C++中的对象序列化,用于存储 OpenCV 的 SVM 对象 [OpenCV 3.1.0]
- C++ <-> AS3 对象序列化
- 为什么我们需要C++的对象序列化
- C++的几个对象序列化
- 脚本到二进制转换和对象序列化
- C++对象序列化
- C#中的MFC对象序列化
- 对c++对象序列化技术的建议
- 从特征(SparseLU对象)序列化分解矩阵
- 增强多对象序列化
- C++Boost对象序列化-定期保存以保护数据
- 提升 MPL 以生成用于对象序列化的代码