Cześć :)
Uczę się właśnie przeciążenia operatorów i moim pierwszym mini zadankiem w celu przećwiczenia tego jest deklaracja dwóch punktów, a następnie utworzenia 3, który za pomocą przeciążenia operatora + załatwi całą sprawę dodawania współrzędnych.
Wzorowałem się na treści z tego filmu:
https://www.youtube.com/watch?v=N0R4rjUciuo
A oto i mój kod (praktycznie bez różnic):
main.cpp
#include <iostream>
#include "punkt.h"
using namespace std;
int main()
{
Punkt X(5, 3);
Punkt Y(2, 1);
Punkt Z;
Z = X + Y;
return 0;
}
punkt.h
#include <iostream>
using namespace std;
class Punkt
{
private:
int x, y;
public:
Punkt(int a = 1, int b = 1);
void read_object();
friend Punkt operator+ (Punkt& object);
};
punkt.cpp
#include <iostream>
#include "punkt.h"
using namespace std;
Punkt::Punkt(int a, int b)
{
x = a;
y = b;
}
void Punkt::read_object()
{
cout << "X: " << x << " " << "Y: " << y << endl;
}
Punkt operator+ (Punkt& object)
{
Punkt wynik;
wynik.x = x + object.x;
wynik.y = y + object.y;
return wynik;
}
Odnośnie ostatniej definicji funkcji z przeciążeniem operatorów wydaje mi się, że to powinno być:
Punkt Punkt :: operator+ (Punkt& object)
{
Punkt wynik;
wynik.x = x + object.x;
wynik.y = y + object.y;
return wynik;
}
, ale wtedy pokazuje mi się praktycznie 2 razy więcej błędów niż mam obecnie.
Podaję jeszcze komunikaty, jakie mi wyskakują odnośnie błędów:
main.cpp
-dwuargumentowy "+":"Punkt" nie definiuje operatora lub konwersji do typu akceptowalnego dla wstępnie zdefiniowanego operatora
punkt.cpp
- "y" to niezadeklarowany identyfikator
- "x" to niezadeklarowany identyfikator
Z góry dziękuję za wszystkie odpowiedzi. :)