Skocz do zawartości
ArtifeX

Przeciazanie Operatorów I Funkcje Zaprzyjaznione

Rekomendowane odpowiedzi

Witam mam problem z tym programikiem. Tresc zadania:

 

Stwórz klase Figura, zawierajaca pola (typu protected) podstawa i wysokosc, metody dostepu do tych pól oraz metode przecazajaca operator <<, do wyswietlania obiektów tej klasy poprzez strumien wyjsciowy. Nastepnie stwórz dwie klasy pochodne od klasy Figura {Trojkat i Kwadrat. Klasy te maja zawierac po dwa konstruktory, a takze przeciazane odpowiednio operatory +, -, *, /. Dodanie dwóch figur polega na dodaniu do siebie pól tychze figur - analogicznie pozostale operacje.

 

A to co wykombinowalem, nie wiem jak pozbyc sie bledow i do czego sie rzuca kompilator. Jak mam powniez jak w tresci zadania dodac obie figury i wyswietlic

#include <iostream>#include <stdlib.h>using namespace std;  class Figura{        protected:                  int podstawa;                  int wysokosc;                          public:        Figura(){               setPodstawa(0);               setWysokosc(0);               }        Figura operator+(Figura p);        friend ostream& operator<<(ostrem& os, Figura p);        int getPodstawa();        int getWysokosc();        void setPodstawa(int podstawa);        void setWysokosc(int wysokosc);};  Figura::Figura operator+(Figura p){                 return Figura(getPodstawa()+p.getPodstawa(),getWysokosc()+p.getWysokosc());                 }  ostream& operator<<(ostream& os, Figura p){                 os<<"Podstawa=" << p.getPodstawa()<< "\t Wysokosc="<<p.getWysokosc();                 }  Figura::int getPodstawa(){              return podstawa;              }  Figura::int getWysokosc(){              return wysokosc;              }  Figura::void setPodstawa(int podstawa){               this->podstawa=podstawa;               }  Figura::void setWysokosc(int wysokosc){               this->wysokosc=wysokosc;               }                                      class Trojkat :  public Figura {        Trojkat(){                  int poleT=wysokosc*podstawa;                  }        Trojkat(){                                    }                  friend ostream& operator+(ostrem& os, Figura p);                  friend ostream& operator-(ostrem& os, Figura p);                  friend ostream& operator*(ostrem& os, Figura p);                  friend ostream& operator/(ostrem& os, Figura p);  };                                    class Kwadrat :  public Figura {        Kwadrat(){                  int poleK=wysokosc*podstawa;                  }        Kwadrat(){                                    }                  friend ostream& operator+(ostrem& os, Figura p);                  friend ostream& operator-(ostrem& os, Figura p);                  friend ostream& operator*(ostrem& os, Figura p);                  friend ostream& operator/(ostrem& os, Figura p);  };  int main(){                  system("PAUSE");          return 0;}

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

może na początek zamień ostrem& na ostream& :?:

 

No i jeszcze może #include <iostream> na #include <iostream.h> ...

 

      Kwadrat(){                 int poleK=wysokosc*podstawa;                 }       Kwadrat(){                                  }                 friend ostream& operator+(ostrem& os, Figura p);                 friend ostream& operator-(ostrem& os, Figura p);                 friend ostream& operator*(ostrem& os, Figura p);                 friend ostream& operator/(ostrem& os, Figura p);

2 takie same funkcje, robiące co innego... Może miał być destruktor, czyli ~Trojkat()? //mogę się mylić, bo dawno nie miałem cpp

Edytowane przez MareCeK

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...