Qt Serializion自定义类

时间:2015-01-26 15:01:10

标签: c++ qt qt4

我的代码有什么问题!!!!我收到以下错误消息: 未解决的外部符号。 任何建议..以及从QObject whit到你试图访问私人会员的内容是什么。

namespace BioQt {
     class Location : public QObject
    {
        Q_OBJECT
    public:
        explicit Location(QObject *parent );

    };
    QDataStream &operator<<(QDataStream &out, const Location &obj);
    QDataStream &operator>>(QDataStream &in, Location &obj);

    }


    Q_DECLARE_TYPEINFO(BioQt::Location, Q_PRIMITIVE_TYPE);

#endif

这是我的cpp文件

namespace BioQt {

Location::Location(QObject *parent)
    : QObject(parent)
{

}



QDataStream &operator<<(QDataStream &ds, const Location &obj) {
    for(int i=0; i<obj.metaObject()->propertyCount(); ++i) {
        if(obj.metaObject()->property(i).isStored(&obj)) {
            ds << obj.metaObject()->property(i).read(&obj);

        }
    }
    return ds;
}
QDataStream &operator>>(QDataStream &ds, Location &obj) {
    QVariant var;
    for(int i=0; i<obj.metaObject()->propertyCount(); ++i) {
        if(obj.metaObject()->property(i).isStored(&obj)) {
            ds >> var;
            obj.metaObject()->property(i).write(&obj, var);
        }
    }
    return ds;
}

} // namespace BioQt

1 个答案:

答案 0 :(得分:0)

我设法使用 Qt 5.4.0 vs2010 x86 进行编译,没有任何错误。回到Qt 4.7的日子里,我记得类似的东西,将身体移动到头文件并使用内联为我工作,我记得。