Przeladowanie operatora +

Przeladowanie operatora +
balti
  • Rejestracja:około 10 lat
  • Ostatnio:prawie 3 lata
  • Postów:156
0

Witam mam problem z przeladowaniem operatora + przyjmujacego 2 argumenty obiekt klasy i string i na odwrot.
deklaracje

Kopiuj

    friend
    osoba operator+(const string& n,osoba& r);
    friend
    osoba operator+(osoba& r,const string& n);
 

definicje poza klasa osoba
Wiem ze nie musialem uzywac metod dostepowych jesli funkcja ma przydomek friend ale po prostu dla cwiczenia sobie tak zrobilem :P

Kopiuj
 

    osoba& operator+(osoba& r,string& n){

        r.surname() = n;
        return r;
    }
    osoba& operator+(string& n,osoba& r){

        r.surname() = n;
        return r;
    }
Kawalek kodu dla ktorego chcialem zeby dzialal:

osoba tab[4];

Kopiuj
tab[1] = tab[1]+ "Kowalska";
		tab[3] = "Bocian" + tab[3];

		for (int i = 0; i < 4; ++i)
			cout << tab[i];
 

Myslalem by wgl zmienic cialo na generowanie nowego obiektu

edytowany 3x, ostatnio: balti
twonek
  • Rejestracja:prawie 11 lat
  • Ostatnio:prawie 2 lata
  • Postów:2500
0
balti napisał(a):

Witam mam problem

A coś więcej powiesz?

pylaochos
  • Rejestracja:ponad 13 lat
  • Ostatnio:2 miesiące
  • Lokalizacja:Warszawa
  • Postów:85
0

Operator+ przyjmuje tylko jeden argument :)

Zobacz pozostały 1 komentarz
pylaochos
Jak to która wersja? a+b, definiujesz operator obiektu a, argumentem jest b. Gdzie niby miał by się znaleŹć kolejny argument? a+bc?
twonek
a wiesz, że możesz zdefiniować globalny operator+, który przyjmuje a i b?
pylaochos
Faktycznie, moja wina. Aczkolwiek gosciu chce go mieć w klasie.
twonek
Nie wiem po czym tak wnioskujesz, bo ja widzę wręcz przeciwnie. Definiuje funkcję zaprzyjaźnioną z dwoma argumentami.
pylaochos
Dowiedziałem się dzisiaj nowych rzeczy. Wybacz, nie wiedziałem, że >friend< pozwala również na dostęp globalny :)
Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 18 godzin
1

operator powinien zwracać nowy obiekt, a ty modyfikujesz jeden z parametrów i zwracasz nań referencję.

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.