przeładowanie operatorów - nie działa tak jak chcę.

0
#include <iostream>
#include <cmath>
#include <string>
#include <cstdlib>
#include <ctime>

class Kwadrat
{
private:
	double bok;
public:
	Kwadrat(double bok)
	{
		this->bok = bok;
	}

	Kwadrat operator+(Kwadrat k)
	{
		Kwadrat wynik(this->bok + k.bok);
		return wynik;
	}

	double pole()
	{
		return bok * bok;
	}

	void wypisz()
	{
		std::cout << pole() << std::endl;
	}
};

int main()
{
	
	Kwadrat k1(5);
	k1.wypisz();

	Kwadrat k2(7);
	k2.wypisz();

	Kwadrat k3 = k1 + k2;
	k3.wypisz();
	return 0;
}

k1(5) = 25
k2(7) = 49
k3 = k1 + k2 = 144

I to rozumiem bo k1 + k2 to 12 * 12 bo w klasie mam bok*bok. A jak to przerobić, żeby było k1(5*5=25) + k2(7*7=49) więc k3(25+49=74) ?

0

Ta ostatnia linijka coś się źle napisała bo gwiazdka jako mnożenie się nie pojawiła, nie wiem co się stało. Chcę oczywiście, żeby K3 było jako wynik K1 dodać wynik K2, a nie k1 dodać k2, następnie mnożenie przez siebie.

0

Zastanów się co chcesz osiągnąć. Jeśli sumę pól, to niech operator dodawania zwraca taki kwadrat, którego pole jest sumą pól kwadratów, które dodajesz, czyli
$$<br> \sqrt{a^2 + b^2}<br> $$

1

Jaki sens ma dodawanie kwadratu o boku 5 do kwadratu o boku 7?

Innymi słowy,
qm.png

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