
Originally Posted by
xtal256
Besides, my subclasses do not need specific element names or attributes, so i do not need to override the open and close tag methods for them.
They don't need it now but they might need it in two weeks or seven months from now (like if you need to introduce versioning). Better safe than sorry.
If you want something simpler, you can always do this:
class Object {
public:
void serialize(QXmlStreamWriter &writer) {
writer.writeStartElement(name());
writeContents(writer);
writer.writeEndElement();
}
protected:
virtual QString name
() const { return "Object";
} virtual void writeContents(QXmlStreamWriter &writer) {}
};
class SubObject : public Object {
protected:
QString name
() const { return "SubObject";
} void writeContents(QXmlStreamWriter &writer) {
Object::writeContents(writer);
writer....
}
};
class Object {
public:
void serialize(QXmlStreamWriter &writer) {
writer.writeStartElement(name());
writeContents(writer);
writer.writeEndElement();
}
protected:
virtual QString name() const { return "Object"; }
virtual void writeContents(QXmlStreamWriter &writer) {}
};
class SubObject : public Object {
protected:
QString name() const { return "SubObject"; }
void writeContents(QXmlStreamWriter &writer) {
Object::writeContents(writer);
writer....
}
};
To copy to clipboard, switch view to plain text mode
Bookmarks