Ok so, having looked at the numerous other posts on problems with binary files (reading/writing) I cannot see what I am doing wrong.

Code:
void CFile::SaveFile()
{
    std::ofstream fout;
    fout.open(filename.c_str(), std::ios::out | std::ios::binary);

    if( fout.is_open() )
    {
        for(int loop = 0; loop < MAX_DATA_SIZE; loop++)
            fout.write((char *)&DataList[loop], sizeof(CHighScore));

        fout.close();
    }
}

This part seemingly works just fine, MAX_DATA_SIZE is 10, CHighScore is 8 bytes, and I end up with a saved file of 80 bytes.

But when I go to read it in, it opens the file, then shuts right down.
I've also tried taking out the loop and just reading a single instance from the file, so I know I am just not understanding/missing something.


Code:
void CFile::LoadFile()
{
    std::ifstream fin;
    fin.open(filename.c_str(), std::ios::in | std::ios::binary);

    if( fin.is_open() )
    {
        for(int loop = 0; loop < MAX_DATA_SIZE; loop++)
        {
            CHighScore temp;
            fin.read((char *)&temp, sizeof(CHighScore));
            DataList.push_back(temp);
        }

        fin.close();
    }
    else
        DefaultBuild();
}