Witam,
Mam pewien problem.
Załóżny, że chcemy zapisać stan klasy (pola obiektu pewnej klasy) do pliku(data.txt) za pomocą operatora << ustawiając po jego lewej stronie obiekt klasy:
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
class klasa // klasa której obiekt chce "zapisać"
{
public:
friend ostream& operator << (ostream& out, klasa& obj);
friend ofstream& operator << (ofstream& out, klasa& obj);
string zmienna1, zmienna2, zmienna3; // przykładowe dane
klasa (string zm1, string zm2, string zm3) {zmienna1 = zm1; zmienna2 = zm2; zmienna3 = zm3;};
};
ostream& operator << (ostream& out, klasa& obj) // to przeciążenie operatora działa
{
return out << obj.zmienna1 << endl << obj.zmienna2 << endl << obj.zmienna3 << endl ;
}
ofstream& operator << (ofstream& out, klasa& obj) // tego kompilator(Visual Studio) nie kompiluje
{
return out << obj.zmienna1 << endl << obj.zmienna2 << endl << obj.zmienna3 << endl; // kompilator podkreśla "out"
}
int _tmain(int argc, _TCHAR* argv[])
{
klasa obiekt("jakies", "dowolne", "dane");
cout << obiekt;
ofstream plik("data.txt");
plik << obiekt;
plik.close();
system("PAUSE");
return 0;
}
Nie wiem czemu nie udaje mi się w ten sposób zapisać do pliku.
Skoro moge wydrukować to na konsoli, czemu nie do pliku?
Pozdrawiam