Witam
Mój program ma dwie klasy, Wektor i Matrix, przy czym Matrix to tablica wskaźników na Wektory. Wszystkie operacje na wektorach działają, natomiast gdy wywołam funkcję PlusMat, program się crashuje. Wydaje mi się, że problem w tkwi w konstruktorze kopiującym albo operatorze=, jednak nie mam pojęcia jak to naprawaić. Kod źródłowy daje w linku ponieważ jest podzielony na częsci: https://gist.github.com/anonymous/1ebcd1666fcad9bc9e3f
Proszę o pomoc
0
0
dodaj call stack łatwiej będzie znaleźć problem.
0
- Na takie dolegliwości istnieje tajemnicze narzędzie debuger.
- Zacznij używać znacznika
const
np:Matrix(const Matrix &mat);
lubMatrix operator+(const Matrix &mat) const;
- Nie nadużywaj getterów wewnątrz metody, np:
arr[i] -= wek.Tab()[i];
zamień na:arr[i] -= wek.tab[i];
- Uprość macierz do
class Matrix { unsigned sizeY,sizeX; int *tab; ...
w konstruktorze zrób:Matrix(unsigned sizeY,unsigned sizeX):sizeY(sizeY),sizeX(sizeX),tab(new int[sizeY,sizeX]) {}
- Przy powyższej konstrukcji wystarczy
int *operator[](unsigned y) { return tab+sizeX*y; }
aby posługiwać się:Matrix m(3,3); m[2][2]=333;
- Operator przypisania macierzy nie kopiuje właściwości
len
0
Czyli nie muszę mieć tablicy wskaźników na poszczególne obiekty? Wystarczy sama tablica obiektów? Tylko jeżeli stworzę tablice obiektów, to zostaną one zainicjowane konstruktorem domyślnym, a ja chciałbym wrzucić do nich swoje parametry.
Tylko klasę Matrix, muszę oprzeć o klasę Wektor, takie wytyczne dostałem.