Cómo implementar la serialización en C ++.
Cada vez que necesito serializar objetos en un programa de C ++, recurro a este tipo de patrón:
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;
};
Lo anterior funciona bastante bien en la práctica. Sin embargo, he escuchado que este tipo de cambio de ID de clase es malo y antipatrón; ¿Cuál es la forma estándar, OO de manejar la serialización en C ++?