Chcę zapisać dane na temat obiektu do pliku tekstowego za pomocą przeładowanego operatora. Znalazłem pewien LINK w którym autor z tym samym problemem ma rzekomo dobrze napisane funkcje, tyle że coś się nie kompiluje. Po skonstruowaniu tego co poniżej widać otrzymuję komunikat (poniżej oznaczyłem która linijka się wykłada) :
"invalid initialization of reference of type 'std::ofstream& {aka std::basic_ofstream<char>&}' from expression of type 'std::basic_ostream<char>::__ostream_type {aka std::basic_ostream<char>}'|"
Definicja klasy
class Kasa{
friend ofstream & operator << (ofstream & out, Kasa & obiekt);
float stan_kasy;
int dzien;
int miesiac;
int rok;
int godzina;
int minuta;
public:
void sprzedaz();
void zwrot();
void zapisz_stan(Kasa & obiekt);
Kasa(float stan);
~Kasa();
};
Definicja funkcji
//W PLIKU .h
ofstream & operator << (ofstream & out, Kasa & obiekt);
//W PLIKU .cpp
ofstream & operator << (ofstream & out, Kasa & obiekt){
/*tutaj wyrzuca błąd >>*/ return out << obiekt.stan_kasy<<" "<< obiekt.dzien<<" "<<obiekt.miesiac<<" "<<obiekt.rok<<" "<<obiekt.godzina<<" "<<obiekt.minuta<<" "<<endl;
}
Wywołanie w metodzie klasy Kasa
void Kasa::zapisz_stan(Kasa & obiekt){
SYSTEMTIME st;
GetSystemTime(&st);
obiekt.godzina = st.wHour;
obiekt.minuta = st.wMinute;
ofstream plik("kasa.txt");
plik.open("kasa.txt", ios::in);
plik << obiekt;
plik.close();
}