Cześć, stworzyłem klasę podstawową, w której umieściłem tablicę double Wynik[L][ilosc];
Zmienna L jest zmienną globalną z góry zdeklarowaną. Natomiast, chcę podczas konstrukcji obiektu zmieniać drugi rozmiar tablicy.
Niestety kompilator pluje się, że zmienna ilość nie jest constans...
0
1
Nie ma takiej możliwości. Masz dwie opcji obejścia problemu:
- deklarujesz:
double **Wynik;
w konstruktorze:Wynik=new double*[IleWierszy]; for(unsigned i=0;i<IleWierszy;++i) Wynik[i]=new double[IleKolumn];
w destruktorze:<code class="cpp">for(unsigned i=0;i<IleWierszy;++i) delete[] Wynik[i]; delete[] Wynik;
Odwolanie do y,x:
Wynik[y][x];
#deklarujesz:
```cpp
double *Wynik;
w konstruktorze:
Wynik=new double[IleWierszy*IleKolumn];
w destruktorze:<code class="cpp">delete[] Wynik;
Odwolanie do y,x:
Wynik[y*IleKolumn+x];
1
Skoro jeden rozmiar jest znany to możesz też zrobić tak:
// wynik jest L-elementową tablicą wskaźników na double.
double *wynik[L];
for (size_t i = 0; i < L; ++i) {
wynik[i] = new double[ilosc];
}
// itd...
0
możesz zrobić takie coś :
std::vector<std::vector<double>> array2D;
std::vector<double> drugiRozmiar(zmiennaRozmiar);
array2D.push_back(drugiRozmiar);
//później dodajesz tyle tablic 1D o zmiennym rozmiarze ile wynosi tak jakby rozmiar najbardziej z lewej
0
@robcio, jeżeli już to:
std::vector<std::vector<double> > Tb(PierwszyRozmiar,std::vector<double>(DrugiRozmiar,0));
Ale chyba rozumiesz że nie o to chodzi w tym zadaniu.