Zapis klasy z polami alokowanymi dynamicznie do pliku binarnego
Ostatnio zmodyfikowano 2012-04-06 15:35
akwes Temat założony przez niniejszego użytkownika |
Zapis klasy z polami alokowanymi dynamicznie do pliku binarnego » 2012-04-06 13:51:32 Witam. Zastanawiam się czy jest jakiś myk aby dla klasy
class CKlasa { public: int var1; char * Data; };
przeszło to:
CKlasa tmp; tmp.Data = new char[ 256 ];
file.write(( char * ) & tmp, sizeof( tmp ) );
Na razie problem rozwiązuje przez zapisywanie klasy składnik po składniku, ale to tak brzydko wygląda :)
|
|
DejaVu |
» 2012-04-06 14:37:56 Siłą rzeczy musisz serializować każdą zmienną ręcznie - zapisanie bowiem wskaźnika do pliku nic Ci nie da poza tym, że aplikacja się wywali przy wczytaniu takiego wskaźnika. Poza tym co to za problem napisać poniższą metodę:
void CObiekt::serializuj( CSerializer & output ) const { output.zapisz( m_liczbaInt ); output.zapisz( m_tekst ); output.zapisz( m_liczbaDouble ); }
/edit:
Oraz metodę:
void CObiekt::deserializuj( CSerializer & input ) { input.wczytaj( m_liczbaInt ); input.wczytaj( m_tekst ); input.wczytaj( m_liczbaDouble ); } |
|
akwes Temat założony przez niniejszego użytkownika |
» 2012-04-06 14:45:27 Tego się spodziewałem, liczyłem, że może coś mi umyka i da się ładniej zapisać. Ale poznałem dzięki temu nowe słówko. Fajnie zrobić coś, a potem się dowiedzieć, że to ma swoją nazwę :) //edit, no tak mi to aktualnie działa :) Ale pokusa zapisania tego w jednej linijce była duża :) |
|
DejaVu |
» 2012-04-06 14:51:42 W bibliotece boost znajduje się klasa/szablon do serializacji obiektów - z doświadczenia jednak nie polecam jego używać :P |
|
akwes Temat założony przez niniejszego użytkownika |
» 2012-04-06 15:03:16 Z boostem nie będę kombinował, bo nie sądzę żeby to wiele dało, zwłaszcza skoro nie polecasz :D
Ok, dzięki za pomoc ;D |
|
DejaVu |
» 2012-04-06 15:35:46 |
|
« 1 » |