2016-05-25 4 views
0

Ich habe eine "Slate", die im Wesentlichen der aktuelle Bildschirm ist, in diesem Bildschirm sind Seiten, die "Elemente" bis zu 12 in Größe halten, denn das ist alles, was wird passen auf dem Bildschirm, so dass ich versucht habe, zu überprüfen, sobald es 12 Elemente erreicht, um eine neue Seite zu machen, aber der Code unten aufgeführten nur hinterlässt keine Gegenstände in beide Seite 1 oder Seite 2Löschen Sie temporäre Liste ohne zu löschen, wo ich es zuweisen

int pageItems = 0;  
std::list<item*> tempList; 
page* temp = new page; 
for (std::list<item*>::iterator iter = items.begin(); iter != items.end(); ++iter) 
{ 
    tempList.push_back((*iter)); 
    if (pageItems >= 13) { 
     page_Count++; 
     temp->items = tempList; 
     pages.push_back(temp); 
     tempList.clear(); 
     temp->items.clear(); 
     pageItems = 0; 
    } 
    pageItems++; 
} 

Seite ein Klasse, die std :: list enthält, aber sollte nur mit 12 umgehen, und dann wird eine neue Seite mit dem nächsten Betrag erstellt, wenn es 12 überschreitet, neue Klasse Und slate ist die Klasse, die std :: list sowie std :: list, das Element eins ist nur so, es ist einfacher, eine Klasse zu erstellen, weil ursprünglich es hat nicht Seiten hat, und jetzt ich füttere nur ‚Artikel‘ in ‚Seiten‘ je nachdem, wie viele auf die Schiefertafel gegeben

Antwort

0

Ich denke, das ist Ihr Problem:

temp->items.clear(); 

Sie scheinen die Seite zu löschen nachdem ich es zu deiner Seitenliste hinzugefügt habe

+0

Yeah Ich lösche es, weil ich es in der nächsten Schleife verwenden möchte, und ich habe es bereits der 'pages' Liste hinzugefügt, also sollte es nicht wichtig sein (?) (nicht sicher, so funktioniert es in Java und ich bin neu in C++) – Cacoon

+0

Es ist ein Zeiger, so dass es auf den gleichen Speicher verweist, den Sie zu Ihrer Liste hinzugefügt haben. Ich denke, was Sie tun möchten, ist stattdessen eine neue Seite zuweisen (Temp = neue Seite). Denken Sie daran, den Speicher freizugeben, den Sie später zuweisen – Henningsson

Verwandte Themen