Ich versuche, in C++ ein Objekt einer Klasse in eine Binärdatei zu schreiben und daraus zu lesen. Ich möchte die Datenelemente nicht einzeln schreiben, sondern das gesamte Objekt auf einmal. Für ein einfaches Beispiel:
class MyClass {
public:
int i;
MyClass(int n) : i(n) {}
MyClass() {}
void read(ifstream *in) { in->read((char *) this, sizeof(MyClass)); }
void write(ofstream *out){ out->write((char *) this, sizeof(MyClass));}
};
int main(int argc, char * argv[]) {
ofstream out("/tmp/output");
ifstream in("/tmp/output");
MyClass mm(3);
cout<< mm.i << endl;
mm.write(&out);
MyClass mm2(2);
cout<< mm2.i << endl;
mm2.read(&in);
cout<< mm2.i << endl;
return 0;
}
Die laufende Ausgabe zeigt jedoch, dass der Wert von mm.i, der angeblich in die Binärdatei geschrieben wurde, nicht korrekt gelesen und mm2.i zugewiesen wird
$ ./main
3
2
2
Was ist also falsch daran?
Was muss ich beachten, wenn ich generell ein Objekt einer Klasse in eine Binärdatei schreibe oder aus einer Binärdatei lese?