Eigene Klasse mit CArray-Membern speichern ???



  • Hi allerseits,
    vielleicht habe ich ja ein riesiges Brett vorm Kopf, aber die Serialisierung meiner Klasse läuft kein bischen.
    Es sieht da so aus:

    class CMessSpeicher : public CObject  
    {
       DECLARE_SERIAL (CMessSpeicher)
       //IMPLEMENT_SERIAL in MessSpeicher.cpp OK
    public:
    	void Serialize(CArchive& ar);
    	CArray<int,int> DatenFreqL;//Meine Daten
    	CArray<int,int> DatenDaempfL;
    	CArray<int,int> DatenFreqR;
    	CArray<int,int> DatenDaempfR;
    	CMessSpeicher();
    	virtual ~CMessSpeicher();
    
    };
    

    Die Funktion Serialize sieht so aus

    void CMessSpeicher::Serialize(CArchive &ar)
    {
    	if (ar.IsStoring())
    	{
    		ar << DatenFreqL;
    		ar << DatenDaempfL;
    		ar << DatenFreqR;
    		ar << DatenDaempfR;
    	}
    	else
    	{
    		ar >> DatenFreqL;
    		ar >> DatenDaempfL;
    		ar >> DatenFreqR;
    		ar >> DatenDaempfR;
    	}
    }
    

    Aus der Klasse C...Doc rufe ich aus C...Doc::Serialize mit einer Instanz meiner Klasse die Funktion CMessSpeicher::Serialize auf, also eigentlich alles wie in irgendwelchen Beispielen.
    Wieso läuft das so nicht , weiß einer da bescheid??? 😕



  • Bekommst Du keine Fehlermeldungen?



  • Das soll bei dir ohne Fehlermeldung kompiliert worden sein?

    Versuch es mal so:

    void CMessSpeicher::Serialize(CArchive &ar)
    { 
    	DatenFreqL.Serialize(ar);
    	DatenDaempfL.Serialize(ar);
    	DatenFreqR.Serialize(ar);
    	DatenDaempfR.Serialize(ar);
    }
    


  • Hi,

    @ _gast: Und ob ich eine Fehlermeldung bekomme!!!

    @Nemesyzz:
    Funktioniert!!!
    Na klar, da CArray von CObject abgeleitet ist hat es wohl auch eine eigene Serialize-Funktion.
    Danke, Brett ist weg vom Kopf.
    So long.


Anmelden zum Antworten