所以首先它不工作我创建了一个结构包含以下内容:我在C++中创建一个列表容器类和预期
template <class T>
struct ListNode
{
unsigned int id;
T data;
ListNode *next_left;
ListNode *next_right;
};
并配有一流的下列内容:
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;
}
};
这里是一个链接到main.cpp的确切代码:http://pastebin.com/fHhsvd9A
所以在我的main.cpp中创建一个List实例和一个节点指针:
List<F3D_model> GameEntities;
ListNode<F3D_model> *np;
然后,我创建了F3D_model类的两个模型类实例并将它们添加到列表intsance我创建:
F3D_model model;
model.create();
F3D_model model2;
model2.create();
GameEntities.add(model);
GameEntities.add(model2);
打印模型的信息:
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
代码用来打印信息:
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");
(角度是F3D_model cl中的公共变量屁股)
一切看起来不错。 所以我有一个按键事件,我为模型的角度添加了一个值。
GameEntities.getNode(1)->data.angle += 60;
GameEntities.getNode(2)->data.angle += 60;
然后它再次打印值。
所以问题是,当我按下键时它打印相同,就好像我没有添加值。
但是当我按下键时,它会在屏幕上移动模型,所以它实际上是添加了值。当我将F3D_model的类型更改为int并执行相同的过程时,它工作得很好。
所以我的问题是为什么当我使用F3D_model时它不工作,我该如何使它工作?
您能否提供打印值的代码,以及“当您按下某个键时”的含义是什么,就像菜单一样? –
@bkVnet我的意思是“当你按下一个键”时,我有一个KeyPressed SFML事件,只要我点击“空格”就会增加角度变量。 – Fergarram
好吧,打印这些值时可能会出现问题。当我尝试你的代码后,它添加的值后工作正常。除此之外,如果模型在屏幕上移动,则知道这些值会被添加。 –