Probleme mit vector<class>



  • Hi Leute,

    ich habe bis jetzt versucht mich allein da durchzufuchsen, aber entweder hab ich ein Verständnissproblem oder es geht so nicht wie ich es mir denke.
    Folgender Sachverhalt, ich entwickel ein 2D-Tilebased Jump'n'Run Spiel für Openhandhelds.

    Die Map wird mittels Perlin-Noise-Algorythmus erzeugt, testweise in einem Array von 256x256. Da das irgendwann, im Laufe des Spiels zu klein wird, wollte ich mittels vector das ganze perfektionieren.

    Nun hab ich in meiner Map-Klasse einen vector<CTile>, er wird initialisiert (erstmal wieder auf 256x256, da ich das Schrittweise hinzufügen von Perlin-Werten noch nicht implementiert habe) und es funktioniert ohne großen Aufwand.

    Mein Problem ist jetzt, dass ich nicht auf die Memberfunktionen von CTile zugreifen kann, ich weiß das es über iteratoren geht, aber ich denke ich kann die nicht verwenden. Meine Zeichenroutine, darin kommt der Sachverhalt vor, berechnet den "Array-Ausschnitt" der gezeichnet werden soll (minx,miny,maxx,maxy).

    Folgende Fragen nun :
    1. Wie kann ich, ohne iterator auf die Memberfunktionen der Klasse CTile zugreifen?
    2. Habt ihr evtl. einen anderen Weg der für mich mehr in Frage kommen würde?

    Ich hoffe die Informationen sind genug, danke für evtl. Antworten schonmal im Voraus!

    LG



  • Wie bei normalen Arrays auch:

    vector<CTile> tiles;
    tiles[index].draw();
    tiles[index] = CTile();
    


  • Ist es möglich das meine Definition vom Vector :

    vector<CTile> *map;
    ...
    ...
    map = new vector<CTile>(mapwidth * mapheight);
    

    weil ich wirklich nicht auf die Memberfunktionen zugreifen kann :

    spritesheet->Render(map[x+256*y].getDrawType());
    


  • Warum genau erzeugst du den vector mit new? Damit ist auch klar dass das nicht geht, da dein map natürlich nicht der vector, sondern ein Pointer auf den vector ist 😉



  • Hmmm, manchmal sieht man den Baum vor lauter Wäldern nicht mehr!
    Danke vielmals... das hat mein Problem vorerst gelöst 🙂


Anmelden zum Antworten