erwartet Also zuerst habe ich eine Struktur folgendes enthalten:habe ich eine Liste Container-Klasse in C++ und es funktioniert nicht wie
template <class T>
struct ListNode
{
unsigned int id;
T data;
ListNode *next_left;
ListNode *next_right;
};
Und eine Klasse mit den folgenden:
template <class T>
class List
{
public:
unsigned int id_count;
ListNode<T> *tail;
List()
{
tail = NULL;
id_count = 0;
}
unsigned int add(T item)
{
id_count += 1;
ListNode<T> *n = new ListNode<T>;
n->id = id_count;
n->data = item;
n->next_left = tail;
n->next_right = NULL;
tail = n;
if (n->next_left != NULL)
n->next_left->next_right = n;
return id_count;
}
ListNode<T> *getNode(unsigned int id)
{
bool found = false;
ListNode<T> *np = tail;
while(np != NULL)
{
if (np->id == id)
{
found = true;
return np;
break;
}
else
{
np = np->next_left;
}
}
return NULL;
}
};
Hier ist ein Link zu dem genauen Code von main.cpp:
012.351: http://pastebin.com/fHhsvd9AAlso in meinem main.cpp ich eine List-Instanz und einen Knoten Zeiger erstellen
List<F3D_model> GameEntities;
ListNode<F3D_model> *np;
Dann erstelle ich zwei Modellklasse Instanzen der F3D_model Klasse und fügen Sie sie in die Liste intsance ich erstellt:
F3D_model model;
model.create();
F3D_model model2;
model2.create();
GameEntities.add(model);
GameEntities.add(model2);
Drucken Modelle Informationen:
Created with ID: 1
Created with ID: 2
Model 1 Address: 07091F28
Model 2 Address: 070919D0
Model 1 Angle: 0
Model 2 Angle: 0
Tail ID: 2
Tail Data: 0
Tail Address: 070919D0
-Code verwendet, um Informationen zu drucken :
printf("Created with ID: %i\n",GameEntities.add(model));
printf("Created with ID: %i\n",GameEntities.add(model2));
printf("Model 1 Address: %p\n",GameEntities.getNode(1));
printf("Model 2 Address: %p\n",GameEntities.getNode(2));
printf("----------------\n");
printf("Model 1 Data: %i\n",GameEntities.getNode(1)->data.angle);
printf("Model 2 Data: %i\n",GameEntities.getNode(2)->data.angle);
printf("----------------\n");
printf("Tail ID: %i\n",(GameEntities.tail->id));
printf("Tail Data: %i\n",(GameEntities.tail->data.angle));
printf("Tail Address: %p\n",(GameEntities.tail));
printf("----------------\n");
(Winkel ist eine öffentliche Variable in F3D_model cl ass)
Alles sieht gut aus. So habe ich ein Tastendruckereignis, wo ich einen Wert zu den Winkeln der Modelle hinzufüge.
GameEntities.getNode(1)->data.angle += 60;
GameEntities.getNode(2)->data.angle += 60;
und dann druckt es erneut die Werte.
Also das Problem ist, dass, wenn ich die Taste drücke es druckt das gleiche, als ob ich nicht die Werte hinzugefügt hatte.
ABER wenn ich die Taste drücke, bewegt es das Modell auf dem Bildschirm, so dass es tatsächlich die Werte hinzufügt. Und wenn ich den Typ von F3D_model zu int ändere und den gleichen Prozess mache, funktioniert es gut.
SO meine Frage ist, warum funktioniert es nicht, wenn ich das F3D_model verwende, und wie kann ich es machen?
Können Sie den Code bereitstellen, der die Werte ausgibt und was meinen Sie "wenn Sie eine Taste drücken", ist das wie ein Menü? –
@bkVnet was ich meine mit "wenn Sie eine Taste drücken" ist, dass ich ein KeyPressed SFML-Ereignis habe, das die Winkelvariable fügt, wenn ich "Leerzeichen" treffe – Fergarram
Ok, könnte es ein Problem sein, wenn Sie die Werte drucken. Wenn ich Ihren Code ausprobiert habe, funktioniert es nach dem Hinzufügen der Werte. Wenn sich das Modell auf dem Bildschirm bewegt, wissen Sie, dass die Werte hinzugefügt wurden. –