Jako, że to mój pierwszy post na tym forum to najpierw się przywitam. Witam wszystkich programistów.
A teraz do sedna, próbuję napisać strukturę obsługującą macierze. Wszystko jakoś idzie, macierz niby się tworzy, błędów i ostrzeżen w kompilacji żadnych nie ma. Problem pojawia się gdy próbuję się odwołać do wartości macierzy. Program się wywala i tyle.
Poniżej zamieszczam kod struktury:
struct matrix
{
int h;
int w;
int **values;
matrix(int height, int width)
{
h = height;
w = width;
int **values = new int*[h];
for (int i = 0; i < h; i++)
{
values[i] = new int[w];
for (int j = 0; j < w; j++)
{
values[i][j] = 0;
}
}
}
matrix(int height, int width, int ** val)
{
h = height;
w = width;
int **values = new int*[h];
for (int i = 0; i < h; i++)
{
values[i] = new int[w];
for (int j = 0; j < w; j++)
{
values[i][j] = val[i][j];
}
}
}
matrix operator+(matrix x)
{
matrix wynik = matrix(x.h, x.w);
for (int i = 0; i < x.h; i++)
for (int j = 0; j < x.w; j++)
wynik.values[i][j] = this->values[i][j] + x.values[i][j];
return wynik;
}
matrix operator-(matrix x)
{
matrix wynik = matrix(x.h, x.w);
for (int i = 0; i < x.h; i++)
for (int j = 0; j < x.w; j++)
wynik.values[i][j] = this->values[i][j] - x.values[i][j];
return wynik;
}
};
W tytule napisałem, że jest to błąd konstruktora, bo szczerze mówiąc, nie wiem co innego miało by tu nie działać. I dla przykładu dorzucę jeszcze fragment z main:
int szer = 3, wys = 3;
int **tab = new int *[wys];
for (int i = 0; i < wys; i++)
{
tab[i] = new int[szer];
for (int j = 0; j < szer; j++)
{
tab[i][j] = (i + 1)*(j + 1);
}
}
matrix macierz1 = matrix(3, 3, tab);
cout << macierz1.values[0][0];//Tu sie wszystko psuje :(
Chętnię wysłucham każdej wskazówki, każda pomoc mile widziana, z góry dziękuję.