[C++] Dynamicznie tworzona tablica dwuwymiarowa, macierz

0

Witam serdecznie.
W ramach pracy domowej z programowania w języku C++, muszę napisać klasę do obsługi macierzy. Problem w tym, że liczba kolumn i liczba wierszy przekazywana jest przez parametry w metodzie, a sama macierz musi zostać utworzona dynamicznie operatorem new. I tu kompletnie nie wiem jak to rozgryźć.

W "Symfonii C++ standard" wyczytałem, że tylko wymiar "najbardziej z lewej" może być określony przez zmienną. Może ma ktoś jakieś propozycje?

Podam kod klasy:


#include <iostream>

class Macierz {

    private:
      int liczbaWierszy;
      int liczbaKolumn;
      double *macierz[];
      void utworz(int lWierszy, int lKolumn) {

          macierz = new double[lWierszy][lKolumn]; // i tutaj kompilator wywala błąd

      }

    public:
      Macierz() {

          liczbaKolumn = 0;
          liczbaWierszy = 0;
          *macierz = NULL;
      }

};

Z góry dzięki za wszelkie wskazówki i pozdrawiam.

1

Bo się tak nie da. Chyba dynamiczną alokację pamięci mieliście, co widać, pętle pewnie też, teraz musisz pomyśleć jak to połączyć. Oprócz tego cieknie Ci.

1

double *macierz[] ?
Brawo, 0 elementów tablicy. Geniusz. Proponuje w tej Symfonii przeczytać coś wiecej niż kilak pierwszych stron i dość do dynamicznego zarządzania pamięcią.

double** macierz;
macierz = new double*[N];
for(int i=0;i<N;i++)
  macierz[i]=new double[M];

i voila, mamy macierz NxM

0

@Shalom: dzięki bardzo, nie wpadłem na to.

winerfresh napisał(a)

Oprócz tego cieknie Ci.

To znaczy? Nie rozumiem.

1

Wyciek pamięci = kiedy alokujesz jakąś pamięć i jej nie zwalniasz.

0

Tak tak, wiem. Mam to umieścić w destruktorze :)

I jeszcze raz dzięki za wskazówki, pozdrawiam!

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