Как реализовать сериализацию в 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 ++?

Ответы на вопрос(6)

Ваш ответ на вопрос