[C++] Przeciążanie operatorów << >> a dziedziczenie klas

diego_maradona
Użytkownik
Użytkownik
Posty: 184
Rejestracja: 16 cze 2010, o 00:59
Płeć: Mężczyzna
Lokalizacja: Kraków
Podziękował: 80 razy

[C++] Przeciążanie operatorów << >> a dziedziczenie klas

Post autor: diego_maradona »

Kod: Zaznacz cały

istream& operator>>(istream& isObject ,  studentType& student)
{
	isObject>>student.alphabeticalNum>>student.ID>> student.personType::setFirstName()>>student.personType::setLastName()>>student.points;
	return isObject;
}

ostream& operator<<(ostream& osObject , const studentType& student)
{	
	osObject<<left<<setw(5)<<student.alphabeticalNum<< " "<<setw(5)<<student.ID<<" "<<student.personType::getFirstName()<<" "<<student.personType::getLastName()<<" "<<right<<setw(10)<<student.points<<endl;
	return osObject;
}    
Przeciążenie << wygląda na poprawne, problem tkwi w overloadingu operatora >> . Klasa studentType dziedziczy klasę personType, jak w takim razie uzyskać tu dostęp do prywatnych zmiennych personType : firstName oraz lastName?

plik person.h
Ukryta treść:    
Ukryta treść:    
Ostatnio zmieniony 12 wrz 2011, o 21:06 przez Anonymous, łącznie zmieniany 2 razy.
Powód: Poprawa wiadomości.
Afish
Moderator
Moderator
Posty: 2828
Rejestracja: 15 cze 2008, o 15:45
Płeć: Mężczyzna
Lokalizacja: Seattle, WA
Podziękował: 3 razy
Pomógł: 356 razy

[C++] Przeciążanie operatorów << >> a dziedziczenie klas

Post autor: Afish »

Z klasy dziedziczącej nie dostaniesz się do prywatnych pól klasy nadrzędnej. Albo zmienisz te pola na "protected", albo wyciągniesz te dane przy użyciu getterów, albo zrobisz to tak, żeby operator >> wywoływał najpierw operator >> z klasy Type, a potem wykonał działania specyficzne dla klasy studentType.
ODPOWIEDZ