Problem z przeładowaniem operatorów

Problem z przeładowaniem operatorów
N0
  • Rejestracja:około 12 lat
  • Ostatnio:ponad 11 lat
  • Postów:55
0

czesc,

przeładowuje (przeciążam) operatory strumienia << i >> . Operatory są zaprzyjaźnione z klasami. Składniowych błędów kompilator mi nie wyrzuca. Jednak rezultat przy uzyciu operatora wyjścia jest w postaci ciagu cyfr "8978413",

Natomiast kiedy chce użyć w kodzie operatora wejścia to intellisense podświetla mi: "Theres no operator ">>" matching these operands" . No a przecież jest, bo go przeciążyłem?

Kopiuj
ostream& operator<<(ostream&, const CStudent&);
istream& operator>>(istream&, CStudent&);

int main()
{
	CCzlowiek* Student;
	Student = new CStudent(3); // student trzeciego semestru
	//cout << "/nWprowadz dane studenta";

	Student->Dane();
	cout << Student; // jest okey, ale rezultat jest nie ten.
	cin >> Student; // tutaj podswietla ">>" "Theres no operator ">>" matching these operands"
	
	cin.clear();
	cin.sync();
	cin.get();
	return 0;
}
Kopiuj
ostream& operator<<(ostream& out, const CStudent & T) 
{
	out << T.name << " " << T.surname << " " << T.age << endl
		 << "Kierunek: " << T.kierunek << " Wydzial: " << T.wydzial << " Semestr: " << T.semestr << endl;
	return out;
};

istream& operator>>(istream& in, CStudent & T)
{
	cout << "\nImie: ";
	in >> T.name; 
	cout << "\nNazwisko: ";
	cin >> T.surname;
	cout << "\nWiek: ";
	in >> T.age;
	cout << "\nPlec: ";
	in >> T.sex;
	cout << "\nKierunek: ";
	in >> T.kierunek;
	cout << "\Wydzial: ";
	in >> T.wydzial;
	cout << "\nSemestr: ";
	return in;
}
edytowany 3x, ostatnio: flowCRANE
n0name_l
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad 4 lata
  • Postów:2412
0

Jakbys wrzucil caly kod to bym sie pobawil z Twoim, ale na razie masz przyklad: http://ideone.com/Ankn1t

Rekman
  • Rejestracja:prawie 13 lat
  • Ostatnio:prawie 10 lat
  • Postów:148
1

Student to wskaźnik na tablicę.
Powinieneś wypisywać jej elementy lub pobierać do jej elementu.

n0name_l
Yep, nawet tego nie zauwazylem, *student edit: to nie tablica, zwykly pointer :>
N0
  • Rejestracja:około 12 lat
  • Ostatnio:ponad 11 lat
  • Postów:55
0

Dzieki Rekman, choc nawet udalo mi sie samemu do tego dojsc przed chwila :) Tak wiec operatory sa przeciazone prawidlowo, gdyby ktos chcial wziasc przyklad. Pozdrawiam

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.