void load(void) { // Indlæs fra fooFile ifstream inFile("fooFile.dat",ios::binary);
inFile.read((char*)(this), sizeof(Foo));
inFile.close();
}
private: int i; string str; };
int main() { Foo* foo = new Foo(42, "The answer"); Foo* foo2 = new Foo(0, ""); foo->save();
foo2->load();
foo2->print(); return 0; }
Hvis jeg derimod først kører ovenstående program og fjerner delen af main, der skriver til filen får jeg en segmentation fault. (altså filen der skal læses fra er oprettet) Så main bliver
int main() { // Foo* foo = new Foo(42, "The answer"); Foo* foo2 = new Foo(0, ""); // foo->save();
foo2->load();
foo2->print(); return 0; }
Egentligt har jeg 2 spørgsmål 1) Hvorfor virker det første eksempel, men det andet hvor der udelukkende indlæses ikke? 2) Hvad skal rettes til for at det virker?
Ja det kan du have ret i. Havde ikke lige overvejet at string nok vile give problemer med pointeren. Så giver det også god mening at eksempel 1 virker, men ikke eksempel 2.
Ved du om der er en smart løsning, der kan det jeg gerne vil eller vil det være nemmere bare at udskrive variablerne en for en og så rette til løbende?
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.