Przeładowanie operatora + suma dwóch obiektów klasy

0

Witam,

Szukałem pomocy w internecie oraz na forum, ale niestety nie pomogło..

Muszę napisać przeładowanie operatora + który ma dodawać dwa obiekty tej samej klasy. Problem polega na tym, że wywołanie ma wyglądać następująco:

cout<<"\nSuma Pól: "<<(k1+k2);

A to cały kod:

#include <iostream>
using namespace std;

class kwadrat
{
public:
	int dlugosc;
	int p;
	kwadrat (int a=1)
	{
		dlugosc=a;
		p=pole();
	}
	
	void wyswietl()
	{
		cout<<"Długość boku wynosi: "<<dlugosc;
	}
	
	int pole()
	{
		return dlugosc*dlugosc;
	}


 const kwadrat operator+(const kwadrat& n) {
	kwadrat suma;
	suma.p=this->p+n.p;
	return suma;
	}
};

class prostokat: public kwadrat
{
int a,b;
public:
	prostokat (kwadrat x, int y):kwadrat (y)
	{
		a=x.dlugosc;
		b=y;
	}

	int pole()
	{
		cout<<"\n\n\n a= "<<a;
		cout<<"\n\n\n b= "<<b;
		return a*b;}
};


/*===============================================================================*/
int main (int argc, char *argv[])
{
	kwadrat k1,k2(10), *w;
	prostokat p1(10,40);
	w=&k2; w->wyswietl();
	cout<<"\nPole: "<<(*w).pole();
	w=&p1; w->wyswietl();
	cout<<"\nPole: "<<p1.pole();
	cout<<"\nSuma Pól: "<<(k1+k2);	
		
	return 0;
}

W jaki sposób napisać przeładowanie operatora aby można było go wywołać k1+k2 i wyświetlić cout?

Z góry dzięki za pomoc ;)

0

tak na szybko patrząc to jeżeli chcesz mieć wyświetlanie w cout to musisz przeładować operator << dla Twojej klasy

0

Dzięki fasadin.

Przeciążyłem << i działa tak jak powinno

ostream & operator<< (ostream &wyjscie, const kwadrat &s)         
 {
   return wyjscie <<s.p<< endl;
 }

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