Kurczę, siedzę nad tym pół dnia i nie mogę sobie poradzić. Debugowałem, patrzyłem co jest nie tak i doszedłem tylko do wniosku, że wskaźnik jest po prostu gdzieś usuwany szybciej niż odczytywany, ale jak to naprawić to nie wiem. Poza tym może ten kod w ogóle jest do kitu napisany, proszę zobaczcie.
Ogólnie chodzi o operator +. Chciałbym móc dodawać tablice na zasadzie takiej, że do odpowiednich indeksów większej dodaję odpowiednie indeksy mniejszej, a nadwyżkę zostawiam po prostu. Operator += działa. Ale chodzi o to, żeby móc zapisać c=a+b.
Wrzucę może najbardziej pożądane fragmenty:
Tablice.cpp
#include <iostream>
#include "include/Tablica.h"
Tablica::Tablica(){
rozmiar = 0;
wsk = NULL;
}
Tablica::Tablica(int roz){
rozmiar = roz;
wsk = new int [rozmiar];
}
Tablica::Tablica(const Tablica& t){
rozmiar = t.rozmiar;
wsk = new int [rozmiar];
for(int i=0;i<t.rozmiar;++i)
wsk[i]=t.wsk[i];
}
Tablica::~Tablica(){
delete[] wsk;
}
Tablica& Tablica::operator=(const Tablica& t){
if(this->wsk != NULL)
delete[] wsk;
this->rozmiar = t.rozmiar;
this->wsk = new int[rozmiar];
for(int i=0;i<rozmiar;++i)
this->wsk[i]=t.wsk[i];
return *this;
}
Tablica& Tablica::operator+=(const Tablica& t){
if(rozmiar<t.rozmiar){
int* c = new int[t.rozmiar];
for(int i=0;i<rozmiar;++i){
c[i]=wsk[i]+t.wsk[i];
}
wsk=c;
}
else{
for(int i=0;i<t.rozmiar;++i){
wsk[i]+=t.wsk[i];
}
return *this;
}
}
Tablica& Tablica::operator+(const Tablica& t){
if(rozmiar<t.rozmiar){
Tablica d(t);
for(int i=0;i<t.rozmiar;++i){
d.wsk[i]+=wsk[i];
}
return d;
}
else{
Tablica d(*this);
for(int i=0;i<t.rozmiar;++i){
d.wsk[i]+=t.wsk[i];
}
return d;
}
}