Исключение: нарушение доступа для чтения

void Trainer::write()
{
    ofstream file;
    file.open("trainers.bin", ios::trunc | ios::binary);
    int len = trainers.size();
    file.write(reinterpret_cast<char*>(&len), sizeof(len));
    for (int i=0, len=::trainers.size(); i<len;i++)
        file.write(reinterpret_cast<char*>(&trainers[i]), sizeof(trainers[i]));
}
void Trainer::read()
{
    ifstream file;
    file.open("trainers.bin", ios::binary);
    if (!file.is_open()) return;
    int len;
    file.read(reinterpret_cast<char*>(&len), sizeof(len));
    Trainer tmp;
    for (int i = 0; i < len && file.good(); i++)
    {
        file.read(reinterpret_cast<char*>(&tmp), sizeof(tmp));
        //::trainers.push_back(tmp);
    }
    //cout<< tmp.height <<endl;
    file.close();
}

При вызове функции read всё считывается правильно, но в деструкторе Trauber вылетает. ::trainer это vector<Trainer>

Класс Trainer

class Trainer
{
public:
    Trainer() {}
    Trainer(float weight, float height, float price, string name, string type) : weight(weight), height(height), price(price), name(name), type(type) {}
    ~Trainer() {}
    string Name() { return name; }
    static void write();
    static void read();
private:
    float weight, height, price;
    string name, type;
};


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