Można to zapisać normalnie do pliku bez jakiś dziwacznych serializacji. Zrzucasz po prostu tą pamięć którą zarezerwowano dla obiektu razy ilość tych obiektów w twoim przypadku w wektorze.
Jeżeli masz pola w klasie o określonej wielkości np tablica float[25], co innego gdybyś chciał np zapisać *float, wtedy jakiegoś jednego bajta musiałbyś użyć do zapisu wielkości tej tablicy. Ale potem odczyt musiałby być też trochę inny.
Ja tak zawsze swoje struktury danych w projektach zapisywałem, masz fajny plik binarny. Możesz sobie zrobić w nim jakieś crc na początku. Jest dużo możliwości.
#include "stdio.h"
#include "stdlib.h"
#include "vector"
class person
{
int age;
float weight;
float test[2];
public:
person(int _age, float _weight)
{
age = _age;
weight = _weight;
test[0] = 0.0;
test[1] = 1.1;
}
};
bool file_write(std::vector<person> &p)
{
FILE * f = fopen("test.file","wb");
if(f == NULL)
return false;
fwrite(&p ,sizeof(person),p.size() ,f);
fclose(f);
return true;
}
bool file_read(std::vector<person> &p)
{
FILE * f = fopen("test.file","rb");
if(f == NULL)
return false;
fseek (f, 0, SEEK_END);
long size = ftell (f);
rewind(f);
fread(&p ,sizeof(person),size ,f);
fclose(f);
return true;
}
int main(int argc, char **argv)
{
std::vector<person> v1Person;
std::vector<person> v2Person;
v1Person.push_back(person (10,10.5));
v1Person.push_back(person (11,11.5));
if(!file_write(v1Person))
printf("error write");
if(!file_read(v2Person))
printf("error read");
system("pause");
}