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 ++?

Respuestas a la pregunta(6)

Su respuesta a la pregunta