przeładowanie operatora wejścia

0

Mam problem z przeładowaniem operatora wejścia. Jak wczytać nazwisko? Podaję definicję klasy i definicje niektórych konstruktorów i metod. Próbowałem już wielu opcji. Wczytanie wieku to łatwizna, ale nazwisko... na razie mnie pokonało. Oczywiście nie rezygnuję, ale gdyby ktoś mógł podpowiedzieć. Z góry dzięki.

 
class Osoba
{
private:
	char * nazwisko;
	int wiek;
public:
	Osoba();
	Osoba (char *, int, char *, char *);
	Osoba(Osoba &);
	~Osoba();

	Osoba& operator=(const Osoba&);
	Osoba operator+(const Osoba&) const;
	friend ostream & operator<<(ostream &, Osoba &);
	friend istream & operator>>(istream &, Osoba &);**
	void wypisz();
};
//fragmenty osoba.cpp//
////////////////////konstruktor bezargumentowy//
Osoba::Osoba()
{
	nazwisko = new char[1];nazwisko[0]='\0';
	wiek = 0;
}
///////////konstruktor kopiujący//
Osoba::Osoba(Osoba & os)
{
	nazwisko = new char[strlen(os.nazwisko)+1];
	strcpy(nazwisko,os.nazwisko);

	wiek = os.wiek;
}
//////////operator przypisania//
```cpp

Osoba& Osoba::operator=(const Osoba& os)
{
if(this == & os) return *this;
else
{
delete[] nazwisko;
nazwisko = new char[strlen(os.nazwisko)+1];
strcpy(nazwisko,os.nazwisko);

	wiek = os.wiek;

	return *this;
}

}

2

Jest jakis powod dla ktorego nie uzywasz std::string?

1

I gdzie jest ta twoja próba?
Przynajmniej jedna z.

0

Znalazłem błąd. Wystarczyło odejść od kompa i przemyśleć wszystko jeszcze raz (po raz kolejny :), tym razem skuteczny). Dzięki tym, którzy chcieli pomóc.

A przy okazji, nie używałem **string ** bo takie zadanie.

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