Я пытаюсь написать и прочитать объект класса в и из двоичного файла в С++. Я хочу не писать элемент данных отдельно, но писать весь объект за один раз. Для простого примера:
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;
}
Однако работающий вывод показывает, что значение mm.i, предположительно записанное в двоичный файл, не читается и не назначено на mm2.i правильно
$ ./main
3
2
2
И что с этим не так?
Что я должен знать, когда вообще пишу или читаю объект класса в двоичный файл или из него?