Dziedziczenie a przeciążenie operatorów
Ostatnio zmodyfikowano 2016-04-10 00:54
Blonnik Temat założony przez niniejszego użytkownika |
Dziedziczenie a przeciążenie operatorów » 2016-04-09 22:34:58 Cześć Mam : - klasę podstawową - Tablica ( wskaźnik na inta i rozmiar tablicy) - klasę pochodną od Tablicy - Obraz ( dodatkowo liczba wierszy, kolumn i kolorów) Dla Tablicy mam przeładowany operator dodawania jako funkcję zaprzyjaźnioną, który działa jak zwykłe dodawanie wektorów/macierzy i zwraca Tablicę. Teraz chcę dodać dwa obrazy w taki sposób, że część podstawowa dodaje się normalnie, a liczba wierszy,kolumn i kolorów będzie przepisana od jednego ze składników dodawania (bo i tak mają takie same) Jeśli nie zdefiniuję nowego operatora + to się krzaczy bo jak zapiszę ob1 = ob2 + ob3 to mam Obraz=Tablica. Jest jakiś myk, żeby tylko dopisać co zrobić z tymi nowymi elementami a do tych odziedziczonych użyć już przeciążonego wcześniej + ? Napisałem coś takiego, ale dostaję segmentation fault. Obraz & operator +( const Obraz & ob1, const Obraz & ob2 ) { Obraz suma; Tablica * w; w = & suma; * w = ob1 + ob2; suma.wiersze = ob1.wiersze; suma.kolumny = ob1.kolumny; suma.kolory = ob1.kolory; return suma; } |
|
carlosmay |
» 2016-04-09 22:43:49 Napisałem coś takiego, ale dalej ten sam błąd. |
Czy to jest metoda klasy czy zupełnie zewnętrzna funkcja? Jeśli metoda klasy to błędna. Przeciążanie operatorów |
|
Blonnik Temat założony przez niniejszego użytkownika |
» 2016-04-10 00:30:57 Edytowałem posta, bo dostaję segmentation fault, więc pewnie coś nie tak ze wskaźnikiem, a operator zapisałem jako zewnętrzna funkcja zaprzyjaźniona z klasą. |
|
carlosmay |
» 2016-04-10 00:54:49 Podany jest link, w którym są przedstawione zasady przeciążania operatorów. Poczytaj dokładnie.
Zwracanie obiektu deklarowanego w funkcji przez referencję to błąd. Po wyjściu z funkcji obiekt jest usuwany i przekazany adres prowadzi do nikąd.
|
|
« 1 » |