Не могу записать объект класса с вектором в бинарный файл
Надо записать объект класса, внутри которого содержится вектор целых чисел. У меня получается записать отдельно вектор, но это не то, что мне нужно. Надо записать целый объект. Компилируется всё хорошо, но программа выдает ошибку "Access violation reading location". Вот мой код:
#include <iostream>
#include <vector>
#include <fstream>
using namespace std;
class foo
{
string name;
vector<int> arr;
public:
foo() {}
foo(string name)
{
this->name = name;
}
vector<int>& getVector()
{
return arr;
}
int operator[](const int index)
{
if (index < arr.size())
{
return arr[index];
}
return -1;
}
void setName(string name)
{
this->name = name;
}
string getName()
{
return this->name;
}
};
int main()
{
foo a("qwerty");
fstream fout("qwe", ios::binary | ios::out);
for (int i = 0; i < 5; i++)
{
a.getVector().push_back(i);
}
if (fout)
{
string name1 = "name";
int name1_size = sizeof(name1);
int vector1_size = a.getVector().size();
fout.write(reinterpret_cast<char*>(&name1_size), sizeof(int));
fout.write(reinterpret_cast<char*>(&name1), name1_size);
fout.write(reinterpret_cast<char*>(&vector1_size), sizeof(int));
fout.write(reinterpret_cast<char*>(a.getVector().data()), sizeof(int) * vector1_size);
fout.close();
}
foo b;
fstream fin("qwe", ios::binary | ios::in);
if (fin)
{
string name2;
int name2_size;
int vector2_size;
fin.read(reinterpret_cast<char*>(&name2_size), sizeof(int));
fin.read(reinterpret_cast<char*>(&name2), name2_size);
b.setName(name2);
fin.read(reinterpret_cast<char*>(&vector2_size), sizeof(int));
b.getVector().resize(vector2_size);
fin.read(reinterpret_cast<char*>(b.getVector().data()), sizeof(int) * vector2_size);
fin.close();
}
return 0;
}