Я пытаюсь сохранить сложный объект в файл, я перегружаю < < и >> операторы внутри сложного объекта, подобного этомуstd :: ios_base :: ios_base (const std :: ios_base &) является закрытым
class Data {
public:
string name;
double rating;
friend std::ostream& operator<<(std::ostream& o, const Data& p)
{
o << p.name << "\n";
o << p.rating << "\n";
return o;
}
friend std::istream& operator>>(std::istream& o, Data& p)
{
o >> p.name >> p.rating;
return o;
}
}
Затем я использую операторы, чтобы попытаться сохранить массив объекта в файл. Вот класс, содержащий все методы, связанные с файлами:
class FileSave
{
public:
FileSave()
{
openFile();
load();
}
~FileSave()
{
if(editm)
outfile.close();
else
infile.close();
}
void openFile()
{
if(editm)
outfile.open("flatsave.elo", ios::out | ios::binary);
else
infile.open("flatsave.elo", ios::in | ios::binary);
}
void closeFile()
{
if(editm)
outfile.close();
else
infile.close();
}
void save()
{
changemode(true);
outfile << people << endl;
}
void load()
{
changemode(false);
for(int i=0; i < 10; i++)
{
infile >> people[i];
}
}
void changemode(bool editmode)
{
if(editm != editmode)
{
closeFile();
editm = editmode;
openFile();
}
}
private:
ofstream outfile;
ifstream infile;
bool editm = false;
};
Где люди это массив объекта данных.
Я пробовал комментировать разные биты, но ошибка все еще возникает, другие потоки говорят, что заголовок моей перегрузки неверен, но я просто копирую письмо для письма, поэтому я немного смущен этим.
Заранее спасибо.
Дайте нам полное сообщение об ошибке. – 0x499602D2
Вы пытаетесь скопировать поток (или, возможно, «FileSave»). –
Очень расплывчатый вопрос. Я могу догадаться о вашей проблеме и рассказать вам, что это такое, но это не хороший пост. –