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 😉


Anmelden zum Antworten