(gelöst) Qt 4.5 Operatoren >> QDataStream in eigener Klasse verwenden
-
Hallo Zusammen,
irgendwie scheine ich mit den Operatoren >> auf dem Kriegsfluss zu stehen.
1. In dieser Klasse musste ich die Operatoren so deklarieren:
QDataStream& operator<<(QDataStream &, ProcessData &); QDataStream& operator>>(QDataStream &, ProcessData &);
Da ich in einer public Methode Schreibzugriff auf eine Eigenschaft habe:
siehe hier ein Beispiel:
ProcessEvent ProcessData::getFirstEvent( void ) { ActEventNumber=0; return Events[ ActEventNumber ]; } ProcessEvent ProcessData::getNextEvent( void ) { if( ActEventNumber < Events.size() ) ActEventNumber++; return Events[ ActEventNumber ]; }
Das ist bis jetzt noch nicht mein Problem (denke ich jedenfalls).
Wenn ich dann aber in der Klasse zwei Methoden schreibe zum
sicheren und Einlesen der Daten,
hier zum Schreiben der Daten:void ProcessData::writeProcessData( void ) { QFile file(FileName); file.open(QIODevice::WriteOnly); QDataStream out(&file); out.setVersion(QDataStream::Qt_4_5); out << this; file.close(); }
und hier zum Lesen der Daten:
void ProcessData::readProcessData( void ) { QFile file(FileName); file.open(QIODevice::ReadOnly); QDataStream in(&file); in.setVersion(QDataStream::Qt_4_5); in >> this; file.close(); }
Dann bekomme ich für die Zeile 7 :
in >> this;
den folgenden Fehler vom Compiler, obwohl der Operator definiert und codiert ist:
error: no match for 'operator>>' in 'in &g
note: candidates are: QDataStream& QDataStream::operator>&g
note: QDataStream& QDataStream::operator>>
....
...Hat jemand eine Idee ?
Gruss
-
Ruf mal writeProcessData() auf und schau in die Datei rein
Du wirst dich wundern, denn da steht nur die Adresse des Objektes!
Und warum? operator>> und operator<< verlangen eine Referenz auf dein Objekt, und keinen Pointer!!!
also stattout << this; in >> this;
bitteschön
out << *this; in >> *this;
-
Danke,
das war kurz und schmerzlos
Gruss