Kaskadowe wczytywanie danych z pliku do klasy bazowej.

0

Witam!
Mam za zadanie napisać program który będzie kaskadowo zapisiwał i wczytywał stan obiektu do/z pliku *.txt.
Mam klasę bazową budynek po której dziedziczy klasa szpital i po której dziedziczy szpital_psychiatryczny.
W każdej z tych klas mam przeciążone operatory >> oraz <<. Jak za pomocą tych operatorów wczytać dane z poziomu klasy szpital_psychiatryczny do klasy szpital?

0

Reinterpret cast

W linku powyżej masz opisaną serializację danych.

5

Pod żadnym pozorem reinterpret_cast! Jeśli chcesz rzutować wewnątrz hierarchii klas to wyłącznie static_cast lub dynamic_cast - ale najlepiej unikaj castowania w ogóle.

W przypadku wywołania operatora rodzica możesz to zrobić tak:

struct Budynek
{
	int x;
	friend istream& operator>>(istream& s, Budynek& e){
		return s >> e.x;
	}
};

struct Szpital : Budynek
{
	int y;
	friend istream& operator>>(istream& s, Szpital& e){
		Budynek& parent = static_cast<Budynek&>(e);
		return s >> parent >> e.y;
	}
};

struct SzpitalPsychiatryczny : Szpital
{
	int z;
	friend istream& operator>>(istream& s, SzpitalPsychiatryczny& e){
		Szpital& parent = static_cast<Szpital&>(e);
		return s >> parent >> e.z;
	}
};

Przy czym lepiej zapoznaj się ze wzorcem projektowym factory zamiast tego używać.

1 użytkowników online, w tym zalogowanych: 0, gości: 1