Запись и чтение вектора класса

Пытаюсь считать вектор объекта класса 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.

Как это исправить? И почему это происходит?


Ответы (0 шт):