所以首先它不工作我創建了一個結構包含以下內容:我在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
好吧,打印這些值時可能會出現問題。當我嘗試你的代碼後,它添加的值後工作正常。除此之外,如果模型在屏幕上移動,則知道這些值會被添加。 –