[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

http://pl.wikipedia.org/wiki/Wyciek_pami%C4%99ci
@Shalom uprzedziłeś mnie:)

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