6
私は私はQ_PROPERTY
Sを利用することによって、このようなQObject
を書くことができると思い:読み取り/書き込みのQObject
QObject
sがない理由、私にはわからない、 QDataStream &operator<<(QDataStream &ds, const Object &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, Object &obj) {
return ds;
}
私は何とかds.readBytes
を使用することができますが、どのように私は、プロパティの長さになるだろうと思っていますか?
PS:明らかでない場合、Object
はQObject
を継承する私のカスタムクラスです。
QObjectがシリアライズ可能であるとは思われません。あなたはそれらをコピーすることさえできません。 QVariantを読み返すのは、非常に簡単です(空のQVariantに>>を読み込むだけです)、またはハードです - タイプと長さを自分で処理する必要があります。 – Eugene
シリアライゼーションをお探しの場合は、Boost.Serializeを見てください。 –
@Eugene:答えとして投稿しておかなければならない...何らかの理由で、私が 'QVariant'で読むことができなかったということは私には起こりませんでした。私は彼らがすべて異なるサイズや何かになると思っていましたが、それはC++の仕組みではありません。 – mpen