problem mit array in einer klasse
-
das ist mein code
class map { public: int width; int heigth; int feld[width][heigth]; };kann man das also irgendwie realisieren sodass das feld genau die richtige größe hat ???

-
oggs_the_progger schrieb:
kann man das also irgendwie realisieren sodass das feld genau die richtige größe hat ???
Was verstehst du unter richtiger größe?
-
das array
int array[w][h];soll an die richtige breite und höhe angepasst werden
-
So wie du das vorhast, geht das nicht - die Arraygrößen müssen (Compilezeit)Konstanten sein. Als Lösung kannst du einen geschachtelten vector verwenden:
class map { int width; int heigth; vector<vector<int> > feld; public: map(int w,int h) : width(w),heigth(h), feld(w,vector<int>(h)) {} };(als Alternative kannst du einen int** verwenden und im Konstruktor über new-Aufrufe initialisieren)
-
kannst du mir das mit dem geschachtelten vektor erklären das hab noch nie gehört
bin noch n00b
-
Ein vector kann beliebige Datentypen aufnehmen - auch andere vector'en. Also hast du (siehe oben) einen vector, der aus einzelnen vector<int>'s besteht (jeder von denen entspricht einer Spalte des Feldes).
Im Konstruktor wird das Feld mit w Elementen initialisiert, die jeder als eine h-elementiger int-Vector beginnen - das ergibt insgesamt ein Feld mit w*h passend angeordneten Integer-Werten.
PS: Da hast du als Nebeneffekt, daß du im späteren Verlauf sogar die Größe deines Feldes anpassen kannst.
PPS: Eventuell hilft mein Artikel über STL-Container auch dabei, den Umgang mit Vektoren zu verstehen
