Przeciążenie operatora klasa punkt

0

W jaki sposób stworzyć przeciążenia do takiej klasy:

#pragma once

class Point
{
private:
	double x;
	double y;
public:
	static float howfar;
	static int counter;
	Point(void);
	~Point(void);
	Point(double, double);
	Point::Point(Point &p);
	Point::Point(Point *p);
	void move(int x1, int x2);
	void info();
	void hfinfo();
	void static how(Point *p1, Point *p2);
	float getx(Point p);
	float gety(Point p);
	void suma(Point *p, Point *p);
	Point operator+(Point &p)

	
};

Chodzi o to, aby to wyglądało w ten sposob:

obiekt3=obiekt1+obiekt2

Czy musze stosowac tutaj jeszcze przeciazenie operatora "="
Jak zrobić to w najlepszy sosób?

0

Nie dopisałe: chodzi oczywiście o przeciążenie operatora "+"

0

Dopisz sobie do klasy metodę :

Point (double fx, double fy){x=fx; y=fy;}

A operator zdefiniuj w ten sposób :

Point operator + (Point ob1, Point  ob2)
{
	return Point (ob1.x + ob2.x, ob1.y + ob2.y);
}
0

O to właśnie mi chodziło, niby proste rozwiązanie, a się pogubiłem:D

0

tylko wywala błąd: binary operator has to many argument;/

0

Herk podał ci przepis na operator zaprzyjaźniony z klasą, a nie na operator będący składową klasy.
Przeróbka to nie jest problem. na dodatek nie zastosował referencji :/.

według zasad sztuki powinno być tak:

class Point 
{
...
    // wersja operato jako składowa klasy:
     Point operator+(const Point &p) const;

     // wersja zaprzyjaźniona ALTERNATYWNA: 
     // friend Point operator+(const Point& ob1, const Point& ob2);
...
};

// wersja zaprzyjaźniona ALTERNATYWNA: 
//Point operator + (const Point& ob1, const Point& ob2)
//{
//        return Point (ob1.x + ob2.x, ob1.y + ob2.y);
//}

// wersja operato jako składowa klasy:
Point Point ::operator + (const Point& p) const
{
        return Point ( x + p.x, y + p.y);
}
0

Piszesz też abym dodał metodę a to raczej wygląda jak kostruktor

0
Artur121212 napisał(a)

Piszesz też abym dodał metodę a to raczej wygląda jak kostruktor
??

0

Czy ta metoda, dzieki ktorej pozniej zwracamy moze wygladac tak:

void Point::get(double fx, double fy)
	{
		this->x=fx; this->y=fy;
	}
0

czym różnią się stworzone obiekty, rozumiem, że ten drugi jest wskaźnikiem, ale to new Point()?

Point p();
Point *p = new Point();

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