Запись и чтение вектора класса
Пытаюсь считать вектор объекта класса Product из файла. Класс Product имеет следующую структуру:
class Product
{
string name;
float price;
public:
Product();
Product(string name, float price);
void SetName(string name);
string GetName();
void SetPrice(float price);
float GetPrice();
~Product();
};
Для чтение из файла используется следующая функция:
template<typename T, typename T2>
void GetData(T& data)
{
if (IsConnect()) {
int size = GetDataSize<T2>();
ff.seekg(0L, ios::beg);
for (int i = 0; i < size; i++) {
ff.read((char*)&data[i], sizeof(T2));
}
}
}
Код основной программы:
int main()
{
setlocale(LC_ALL, "ru");
Db* product_db = new Db((char*)"products");
int size = product_db->GetDataSize<Product>();
vector<Product> products(size);
product_db->GetData<vector<Product>, Product>(products);
for (int i = 0; i < products.size(); i++) {
cout << products[i].GetName() << " " << products[i].GetPrice() << " " << endl;
}
products.clear();
}
Чтение и запись происходят хорошо: все данные записываются, читаются. Но я совершенно никак не могу перезаписать или очистить переменную вектора products. При попытка её очистить, или перезаписать я получаю ошибку
Вызвано исключение: нарушение доступа для чтения. _Pnext было 0x11C66EC.
Как это исправить? И почему это происходит?