Cześć wszystkim!
Mam problem z tym kodem:
#include <iostream>
using namespace std;
////////////////////////////////////////////////////////////////////////////////////////////////////////////
//a)Konstruktor inicjujący wartości x, y, z,
//b)Konstruktor kopjujący
//c)Funkcje składową dodająca dwa wektory w następujący (x1+x2, y1+y2, z1+z2)
class Wektor {
private:
float *x, *y, *z;
public:
inline void wyswietl(void)
{
cout << "X: " << *x << endl
<< "Y: " << *y << endl
<< "Z: " << *z << endl;
}
Wektor(float a = 0, float b = 0, float c = 0) /* LINE 98 */
{
x = new float(a);
y = new float(b);
z = new float(c);
}
Wektor(Wektor& source) /* LINE 104 */
{
x = source.x;
y = source.y;
z = source.z;
}
Wektor operator+(const Wektor& pWektor)
{
Wektor tmp;
*tmp.x = *this->x + *pWektor.x;
*tmp.y = *this->y + *pWektor.y;
*tmp.z = *this->z + *pWektor.z;
return tmp;
}
friend Wektor operator-(const Wektor& lWektor, const Wektor& pWektor);
};
Wektor operator-(const Wektor& lWektor, const Wektor& pWektor1)
{
/* Wektor a;
*a.x = *lWektor.x - *pWektor1.x;
*a.y = *lWektor.y - *pWektor1.y;
*a.z = *lWektor.z - *pWektor1.z;
return a;
*/
return Wektor(*lWektor.x - *pWektor1.x, *lWektor.y - *pWektor1.y, *lWektor.z - *pWektor1.z); /* LINE 138 to nie chce zadziałać */
}
int main()
{
Wektor O(1, 2, 3);
Wektor P(1, 10, 1);
Wektor C;
C = O + P;
Wektor A(C);
C.wyswietl();
cout << "----------------\n\n\n";
A.wyswietl();
C = P - O;
C.wyswietl();
return 0;
}
konsola Code:
||=== Build: Debug in nauka_C_przeladowanie (compiler: GNU GCC Compiler) ===|
||In function 'Wektor operator-(const Wektor&, const Wektor&)':|
|138|error: no matching function for call to 'Wektor::Wektor(Wektor)'|
|138|note: candidates are:|
|104|note: Wektor::Wektor(Wektor&)|
|104|note: no known conversion for argument 1 from 'Wektor' to 'Wektor&'|
|98|note: Wektor::Wektor(float, float, float)|
|98|note: no known conversion for argument 1 from 'Wektor' to 'float'|
||=== Build failed: 1 error(s), 1 warning(s) (0 minute(s), 0 second(s)) ===|
IDEA: Odjąć dwa wektory i zwrócić wynik do 3 wektora.
Chodzi o funkcję globalną operator- , nie kompiluje się kod gdy chcę zwrócić returnem obiekt stworzony przez konstruktor jawnie wywołany. Dla zmiennej pomocniczej wew. f. śmiga.
P.S. Pragnę dodać że dopiero się uczę, na innych stronach widziałem że takie rozwiązanie przez k. jawny działa. Nie wiem czy ma to coś wspólnego z wskaźnikiem this?
Link do stronki z której korzystałem: http://edu.pjwstk.edu.pl/wyklady/pro/scb/PRG2CPP_files/node120.html
Pozdrawiam!