Operator= i konstruktor kopiujący

0

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

dodaj call stack łatwiej będzie znaleźć problem.

0
  1. Na takie dolegliwości istnieje tajemnicze narzędzie debuger.
  2. Zacznij używać znacznika const np: Matrix(const Matrix &mat); lub Matrix operator+(const Matrix &mat) const;
  3. Nie nadużywaj getterów wewnątrz metody, np: arr[i] -= wek.Tab()[i]; zamień na: arr[i] -= wek.tab[i];
  4. 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]) {}
  5. 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;
  6. 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.

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