Przeciążanie operatorów i dziedziczenie

0

Otóż mam klasy Czlowiek i Student. Klasa student jest klasa pochodna. Z tych klas chce wyprowadzić dane za pomocą przeciążenia operatorów <<

W klasie Czlowiek mam kilka pol prywatnych które chciałbym wyprowadzić z poziomu klasy student, tylko jak wiadomo klasa student nie widzi tych pól. Czy jest jakiś przyjazny sposób na wyprowadzenie tych danych?

2

gettery w polach protected

class Czlowiek {
private:
int wiek;
string imie, nazwisko;
protected:

int getAge() {
    return wiek;
}

string getSurname() {
    return nazwisko;
}

};

Coś w ten deseń.

1

Czy jest jakiś przyjazny sposób na wyprowadzenie tych danych?

geter i seter?
ewentualnie protected

0

getery i setery mam ale jak chce wywolac cos takiego:

 ostream& operator<< (ostream &wyjscie, student const& a)
{
	wyjscie << "STUDENT" << endl << "Imie: " << a.getImie() << " Nazwisko: " << a.getNazwisko() << " Wiek: " << a.getWiek() << " Plec: " << a.getPlec()  << endl;
	return wyjscie;
}

to mam błąd przy "a"

0

Zadeklaruj tą funkcję jako zaprzyjaźnioną, bądź w ciele klasy Student.
Protected jest dostępne tylko z poziomu podklas i samej klasy, a ta funkcja jest jak mniemam globalna.

0

ej lol juz nie ma. Sorry za utrudnienia

EDIT: Jednak dalej cos nie tak

EDIT2: wywalilem const i spoko...

0

Nie wywalaj const z argumentu operatora, tylko dodaj go do getterów.

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