Klassen-Serialisierungs-Problem
Verfasst: 19. Oktober 2008 13:37
Hallo, ich möchte meine Klassen serialisieren
Jetzt habe ich nur das Problem, dass meine Get-Methoden immer leere Werte zurückliefern.
Wäre nett, wenn mir da jemand helfen könnte.
Jetzt habe ich nur das Problem, dass meine Get-Methoden immer leere Werte zurückliefern.
Code: Alles auswählen
//KlasseA.cpp
#include "KlasseA.h"
KlasseA::KlasseA()
{
}
KlasseA::~KlasseA()
{
}
//Kopier-Konstruktor
KlasseA::KlasseA(const KlasseA & a) {
wert = a.wert;
}
//Zuweisungsoperator überladen
KlasseA & KlasseA::operator=(const KlasseA & a) {
wert = a.wert;
return *this;
}
void KlasseA::setWert(const QString & wert) {
this->wert = wert;
}
QString KlasseA::getWert() const {
return this->wert;
}
QDataStream& operator<<(QDataStream & dataStream, const KlasseA & a)
{
QString wert = a.getWert();
dataStream << wert;
return dataStream;
}
QDataStream& operator>>(QDataStream & dataStream, KlasseA (&a))
{
QString wert;
dataStream >> wert;
a.setWert(wert);
return dataStream;
}
Code: Alles auswählen
//KlasseB.cpp
#include "KlasseB.h"
KlasseB::KlasseB()
{
}
KlasseB::~KlasseB()
{
}
//Kopier-Konstruktor
KlasseB::KlasseB(const KlasseB & a) {
klasseA = a.klasseA;
}
//Zuweisungsoperator überladen
KlasseB & KlasseB::operator=(const KlasseB & b) {
klasseA = b.klasseA;
return *this;
}
void KlasseB::setKlasseA(const KlasseA & klasseA) {
this->klasseA = klasseA;
}
KlasseA KlasseB::getKlasseA() const {
return this->klasseA;
}
QDataStream& operator<<(QDataStream & dataStream, const KlasseB & b)
{
KlasseA klasseA = b.getKlasseA();
dataStream << klasseA;
return dataStream;
}
QDataStream& operator>>(QDataStream & dataStream, KlasseB (&b))
{
KlasseA klasseA;
dataStream >> klasseA;
b.setKlasseA(klasseA);
return dataStream;
}
Code: Alles auswählen
//main.cpp
#include "KlasseB.h"
#include <Qt/QDebug.h>
int main(int argc, char** argv)
{
KlasseB klasseB;
klasseB.getKlasseA().setWert("Hallo Welt!");
qDebug()<< klasseB.getKlasseA().getWert(); //ist leer
QByteArray byteArray;
QDataStream streamOut(&byteArray,QIODevice::WriteOnly);
streamOut << klasseB;
QDataStream streamIn(&byteArray,QIODevice::ReadOnly);
KlasseB klasseB2;
streamIn >> klasseB2;
qDebug()<<klasseB2.getKlasseA().getWert(); //ist leer
}