Как реализовать сериализацию в C ++
Всякий раз, когда мне нужно сериализовать объекты в программе на C ++, я прибегаю к такой схеме:
class Serializable {
public:
static Serializable *deserialize(istream &is) {
int id;
is >> id;
switch(id) {
case EXAMPLE_ID:
return new ExampleClass(is);
//...
}
}
void serialize(ostream &os) {
os << getClassID();
serializeMe(os);
}
protected:
int getClassID()=0;
void serializeMe(ostream &os)=0;
};
Вышесказанное работает довольно хорошо на практике. Тем не менее, я слышал, что такое переключение между идентификаторами классов является злом и антипаттерном; что такое стандартный, ОО-способ обработки сериализации в C ++?