Pomoc w znaleźieniu błędu

0

Pomógłby ktoś znaleźć błąd w tym kodzie i pomógł poprawić?Zrzut ekranu (7).pngZrzut ekranu (8).png

0

#include <iostream>

using namespace std;

class wektor
{
string nazwaWektora;
double x,y,z;
public:
wektor
(double = 0., double = 0., double = 0., string = "");

wektor operator+(wektor w);
wektor operator*(wektor w);
double getX(){return x;}
double getY(){return y;}
double getZ(){return z;}
string getNazwa(){return "nazwaWektora";}

};
ostream& operator<<(ostream& strumien, wektor& w)
{
strumien << "(" <<w.getX()<<" , "<<w.getY()<<" , "<<w.getZ()<<" , "<<w.getNazwa()<<")";
return strumien;
}

wektor w1(-1., -1., -1., "Globalny");

int main()
{
wektor w1(1., -2., 1., "Lokalny");
cout<<w1<<endl;
cout<<::w1<<endl;
cout<<"Suma wektorow = "<<w1+ ::w1<<endl;

if(w1 * ::w1 == 0) cout<<"Wektory s¹ prostopad³e";
else cout<<"Wektory nie s¹ prostopad³e";

return 0;

}
Tutaj cały kod

1

Brakuje implementacji operatorów

wektor operator+(wektor w);
wektor operator*(wektor w);

Jak kompilator ma wiedzieć jak dodawać wektory mając do dyspozycji tylko deklarację.

Dodatkowo nie masz implementacji konstruktora, więc kompilator nie będzie także wiedział jak utworzyć obiekt będący wektorem.

0

https://pastebin.com/KN9fyGwX

#include <iostream>
using namespace std;

class wektor{
string nazwaWektora;
double x, y, z;
public:
wektor (double xi = 0., double yi = 0., double zi = 0., string naW = ""){
x = xi;
y = yi;
z = zi;
nazwaWektora = naW;
}
wektor operator+(wektor w){
wektor wynik;
wynik.x = x + w.x;
wynik.y = y + w.y;
wynik.z = z + w.z;
return wynik;
}
wektor operator*(wektor w){
wektor wynik;
wynik.x = x * w.x;
wynik.y = y * w.y;
wynik.z = z * w.z;
return wynik;
}
bool operator == (wektor w)
{
if(x == w.x && y == w.y && z == w.z)
{
return true;
}
return false;
}
double getX(){return x;}
double getY(){return y;}
double getZ(){return z;}
string getNazwa(){return nazwaWektora;}
};
ostream& operator<<(ostream& strumien, wektor& w){
strumien << "(" << w.getX() << ", " << w.getY() << ", " << w.getZ() << ")";
return strumien;
}

wektor w1(-1., -1., -1., "Globalny");

int main(){
wektor w1(1., -2., 1., "Lokalny");
cout << w1 << endl;
cout << ::w1 << endl;
cout << "Suma wektorow - " << w1 + ::w1 << endl;
if(w1 * ::w1 == 0) cout << "Wektory są prostopadle";
else cout << "Wektory nie sa prostopadle";

return 0;

}

1

Problemem jest brak słowa const w sygnaturze operatora << oraz w funkcjach get
Zamień na:

    ostream& operator<<(ostream& strumien, const wektor& w)
    double getX() const {return x;}
    double getY() const {return y;}
    double getZ() const {return z;}

Wartość zwracana poprzez operatory + i * jest wartością **rvalue ** i nie może być związana z niestałym parametrem.

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