Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Dziedziczenie a przeciążenie operatorów

Ostatnio zmodyfikowano 2016-04-10 00:54
Autor Wiadomość
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.
C/C++
Obraz & operator +( const Obraz & ob1, const Obraz & ob2 )
{
    Obraz suma;
    Tablica * w;
    w = & suma;
   
    * w = ob1 + ob2; //dodajemy czesc tablicowa
   
    suma.wiersze = ob1.wiersze;
    suma.kolumny = ob1.kolumny;
    suma.kolory = ob1.kolory;
   
    return suma;
}
P-147130
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
P-147132
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ą.
P-147133
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.
P-147134
« 1 »
  Strona 1 z 1