Serialization von C++ Objeckten, Pointern, etcpp.



  • Anforderung:

    template<typename T>
    void* DoSerialization<T>(T* obj);

    template<typename T>
    T* UnSerialization<T>(void* blob);

    oder so in der art!

    Wie geht man bei sowas am besten vor?
    - allgemein
    - T z.B. eine benutzerdefinierte klasse ist

    Gibts einfache methoden? (wohl kaum) 😉

    bin für jeden vorschlag dankbar!

    als tool kenn ich XParam (http://xparam.sourceforge.net/), da es fürs studium ist, weiß ich nicht, ob ich es benutzen darf!



  • am besten so;

    template <class T>
    void *DoSerialize (T *obj) { //warum mit void*?
       return obj->serialize();
    }
    
    template <class T>
    T *UnSerialize (void *v) { //hier musst du dann eben T immer angeben
       return new T(v); //qiek, sieht nicht toll aus
    }
    
    //vielleicht eher
    template <class T>
    T *UnSerialize (void *v, T *in) {
       return (in->restore(v), in);
    }
    

    oder du machst, was üblicher ist, und überlädst operator >> und << für deien klassen, um mit den C++ streams zusammenzuarbeiten.
    eine allgemeine methode wird nicht gut gehen. jede klasse allein weiß über ihre implementierung bescheid, und niemand anderes (außer friends, ok). deshalb sollte sie sich auch selbst um Serialisierung kümmern.



  • danke...
    war meine erste idee!


Anmelden zum Antworten