> "acs" <abbaratet@live.dk> wrote in message 
> news:54f0b4d4-adbe-404a-9381-a15fcb1aeb1b@m26g2000yqb.googlegroups.com...
[8<8<<8]
> Hvad går der galt og er der evt en bedre metode at gøre dette på?
Det der helt konkret går galt er at du skriver adressen på pegeren byer ud i 
filen, for derefter ved indlæsning at tildele by2 værdien af adressen på 
byer.
Det giver ingen mening (så programmet crasher), og dine cast (jeg 
foretrækker C++ cast frem for C cast - i dette tilfælde skal det være 
reinterpret_cast) skjuler det for dig.
Castene siger til compiler "bare rolig - jeg har styr på hvad der sker" ...
Derudover giver det den konkrete værdi af en pointer ikke meget mening at 
gemme i en fil. Den kan bruges en unik identifikation af et objekt, men kan 
bruges som pointer værdi når den læses igen.
Ydermere skal objekts _værdi_ skrives ud i filen (f.eks. byens navn) hvis 
den skal kunne genskabes.
Det du har fat i er serialisering af objekter.
Borland C++ havde i gamle dage et klassebibliotek der kunne det - jeg ved 
faktisk ikke om det stadig er tilfældet (selvom jeg fortsat bruger .
Det virkede udemærket, men den slags teknologi giver nemt nogle problemer 
med versionering osv. fordi det laver en hård kobling mellem 
implementeringen af et objekt og persistens formatet.
Hvis det skal være mere robust syntes jeg man er bedre tjent med at bruge en 
egentlig database eller skrive informationen i en tekst konfigurations fil 
(f.eks. en INI fil).
Hvis man har brug for serialisering af objekter i C++ vil jeg anbefale at 
kigge på Boost.Serialization
   
http://www.boost.org/doc/libs/1_41_0/libs/serialization/doc/index.html
Jeg har ikke selv prøvet det bibliotek, men bibliotekerne i Boost plejer at 
være gode.
Java har reflection, som (så vidt jeg husker) kan give information på 
run-time om hvilke data-medlemmer der er i en klasse, og dermed kan 
automatisere serialisering på run-time.
C++ har ikke reflection, og hvis man skulle automatisere serialisering i C++ 
skal det gøres på compile-time med ekstra værktøjer, og der bliver nogle 
problemer med hvor objekterne er allokeret (i Java har man kun een 
mulighed - i C++ har man (mindst) 3).
Iøvrigt mener jeg generelt at man er bedst tjent med at bruge engelske navne 
på egne klasser, objekter og kommentarer - men det er en helt anden sag.
Alle nøgleord i C++ (og mange andre programmeringssprog) er engelsk, og man 
får en underlig sammenblanding af engelsk og dansk.
Når man har vedligeholdt programmer, der oprindeligt er skrevet i Tyskland, 
Frankrig og Finland, bliver man mere overbevist om den holdning 
 
-- 
Venlig hilsen
Mogens Hansen