Écrire et lire un objet de la classe dans et à partir d'un fichier binaire

J'essaie d'écrire et de lire un objet de la classe dans et à partir d'un fichier binaire en C++. Je veux pas écrire les données de ses membres individuellement, mais écrire la totalité de l'objet à la fois. Pour un exemple simple:

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;  
}

Cependant, la sortie en cours d'exécution montrent que la valeur de mm.j'ai soi-disant écrite dans le fichier binaire n'est pas lu et attribué à mm2.j'ai correctement

$ ./main   
3  
2  
2  

Alors, quel est le problème avec elle?

Que dois-je être conscient de quand généralement de l'écriture ou de la lecture d'un objet d'une classe ou d'un fichier binaire?

OriginalL'auteur Tim | 2010-01-12