2010-11-30 2 views
4

Ich benutze ein 2D-Array als Brett für ein Brettspiel, das ich mache. Die Mitglieder sind Zeiger auf Objekte vom Typ "Tile". Die Indizes sind x und y, die die horizontale bzw. vertikale Position bezeichnen. In der Board-Klasse sieht das so aus.Was ist der richtige Weg, um Spalten in einen 2D-Zeigervektor einzufügen?

vector<vector<Tile*> > playGround; 

Das Problem ist, dass, da das Spiel fortschreitet, werden Fliesen SPIELPLATZ hinzugefügt, und der Vektor in der Lage sein, falls eine neue Kachel Position erfordert dies zu erweitern. Ich habe versucht, Zeilen an die Spitze hinzuzufügen und Spalten auf der linken Seite hinzuzufügen. Ich habe versucht, die insert() -Funktion zu verwenden, und das ist, wo mein Problem ist.

Gerade jetzt mein Code wie folgt aussieht:

void Board::addRowTop() 
{ 
    Tile* t; 
    int i = 0; 
    maxY++; 
    for (; i < maxX ; i++) 
     playGround[i].insert(0, t); 
} 

nicht Sie Maxx und maxY Variablen ausmacht; sie sind für das vorliegende Thema irrelevant. Das Problem ist: insert (0, t) funktioniert offensichtlich nicht, weil "t" nicht der Datentyp ist, der von der Funktion erwartet wird.

Meine Frage ist einfach: Was genau muss das zweite Argument von insert() sein, um dieses Problem zu lösen? Ich habe mich auf Google umgesehen, aber ich konnte nicht die richtige Antwort finden.

Vielen Dank im Voraus.

Antwort

3

Ich denke nicht, dass es das 't' Argument ist, das die Funktion verursacht: playGround [i] ist ein std::vector<Tile *>, also sollten Sie Tile * s einfügen können (obwohl BITTE sagen Sie, dass Sie initialisieren ' t 'zuerst - zumindest auf NULL oder 0!).

Das Problem ist, dass das erste Argument des Inserts ein Iterator sein muss. Versuchen:

playGround[i].insert(playGround[i].begin(), t); 

-matt

+0

Thank you! Die Antwort war nicht ganz korrekt, hat mir aber auf dem Weg zur richtigen Lösung geholfen. (playGround.begin() musste playGround [i] .begin() sein.) Nochmals vielen Dank. –

+0

Hoppla! In der Bearbeitung behoben! – Gretchen

Verwandte Themen