Witam, aktualnie uczę się c++, mam problem z przeciążeniem operatora dodawania.
Oto kod klasy:
class Wektor {
private:
int dlugosc;
int* tablica;
public:
Wektor();
Wektor(int a,int b);
Wektor(Wektor&);
int jaka_dlugosc ();
void wypisz_tablice ();
~Wektor() {delete []tablica;}
friend bool operator==(Wektor& w1, Wektor& w2);
friend bool operator!=(Wektor& w1, Tablica_liczb& tablica) ;
Wektor operator+(Wektor& w1);
};
A oto kod funkcji przeciążającej operator:
Wektor Wektor::operator+(Wektor& w1) {
Wektor w3(w1.dlugosc,0);
for (int i=0;i<w3.dlugosc;i++) {
w3.tablica[i]=w1.tablica[i]+this->tablica[i];
}
return w3;
}
Wypisując najpierw obiekt1 później obiekt2, a następnie obiekt3 czyli obiekt1+obiekt2 dostaję wynik:
6 6 6 6 6 6
6 6 6 6 6 6
12410024 12390264 12 12 12 12
Dodam, że jeżeli dodam linijkę kodu w funkcji przeciążającej operator+ :
Wektor Wektor::operator+(Wektor& w1) {
Wektor w3(w1.dlugosc,0);
for (int i=0;i<w3.dlugosc;i++) {
w3.tablica[i]=w1.tablica[i]+this->tablica[i];
cout << w3.tablica[i] << " " ; // DODANA LINIJKA KODU
}
return w3;
}
To w tym miejscu następuje wypisanie wartości 12 12 12 12 12 12 czyli poprawnych, zatem błąd występuje przy zwracaniu ?