我在尝试在磁盘上序列化我的对象时遇到问题。这是一个简化的场景:
我有 ObjectA 提供自己的序列化运算符。它们可以工作,因为我可以将数据保存/加载到文件中。接下来我有 ObjectB 包含 ObjectA 作为数据成员。尝试保存 ObjectB 时出现运行时错误:
QVariant::save: 无法保存类型 279。
我将此代码用于流操作符:
QDataStream & operator<<( QDataStream & dataStream, const ObjectA & objectA )
{
for(int i=0; i< objectA.metaObject()->propertyCount(); ++i) {
if(objectA.metaObject()->property(i).isStored(&objectA)) {
dataStream << objectA.metaObject()->property(i).read(&objectA);
}
}
return dataStream;
}
QDataStream & operator>>(QDataStream & dataStream, ObjectA & objectA) {
QVariant var;
for(int i=0; i < objectA.metaObject()->propertyCount(); ++i) {
if(objectA.metaObject()->property(i).isStored(&objectA)) {
dataStream >> var;
objectA.metaObject()->property(i).write(&objectA, var);
}
}
return dataStream;
}
(只需将 A 替换为 B 用于 ObjectB 运算符)
我认为错误出在 ObjectB 序列化实现中,但我不知道如何进行。