Ошибка при записи в файл ООП
Недавно начал изучать программирование и столкнулся с проблемой. Можете объяснить, почему файл не открывается? И еще один вопрос, как вернуть данные объекта, записанные в файл так, что бы он смог с ними дальше работать? Спасибо.
#include <fstream>
#include <Windows.h>
#include <iostream>
#include <conio.h>
using namespace std;
class Player
{
public:
int x, y;
public:
Player()
{
x = 0;
y = 0;
}
friend class LoadFile;
friend void input(Player &player, LoadFile& loadFile);
void print()
{
cout << "x: " << x << "\ty:" << y << '\n';
}
};
class LoadFile
{
private:
fstream fs;
string nameFile;
public:
void Save(Player &player)
{
//cin >> nameFile;
nameFile = "newFile.txt";
fs.open(nameFile, fstream::in | fstream::out);
if (!fs.is_open())
{
cout << "Файл не удалось открыть" << "\n";
system("pause");
}
else
{
fs.write((char*)&player, sizeof(Player));
}
fs.close();
}
void LoadSave(Player &player)
{
fs.open(nameFile, fstream::in | fstream::out);
if (!fs.is_open())
{
cout << "Файл не удалось прочесть" << "\n";
system("pause");
}
else
{
Player pl;
while (fs.read((char*)&pl, sizeof(Player)))
{
player = pl;
}
}
}
};
void input(Player &player, LoadFile &loadFile)
{
while (_kbhit())
{
switch (_getch())
{
case 'w':
player.y--;
break;
case 'd':
player.x++;
break;
case 'a':
player.x--;
break;
case 's':
player.y++;
break;
case 'x':
loadFile.Save(player);
break;
case 'r':
loadFile.LoadSave(player);
break;
}
}
}
int main()
{
setlocale(LC_ALL, "");
system("chcp 1251 > 0");
Player player;
LoadFile loadFile;
while (true)
{
system("cls");
input(player, loadFile);
player.print();
Sleep(300);
}
}
Источник: Stack Overflow на русском