2014-11-20 69 views
-1

E是Node結構中的成員,但我仍然收到C2039錯誤?這裏是我的代碼:C2039:'E'不是「節點」錯誤的成員

#include "datastructures.h" //datastructures.cpp// 
#include "utility.h" 
#include "Functions.h" 

bool enqueue(Queue &Q, enemy e){ 
    Node *dptr = new Node; 
    if (dptr == NULL){ 
     return false; 
     dptr->E = e; //C2039 here// 
     if (Q.rear == NULL){ 
      Q.rear = Q.head = dptr; 
      return true; 
     } 
     dptr->next = NULL; 
     Q.rear = dptr; 
     return true; 
    } 
} 

任何想法?

對不起,我忘了給結構定義

struct Node{ 
    enemy E; 
    Node *next; 
}; 

struct enemy{ 
    //starting x,y 
    int ID; 
    int T; 
    int Region; 
    int Distance; 
    float Health; 
    int Type; 
    int Pr; 
    int P; 
}; 
+0

由於返回錯誤,該行永遠不會到達。 – Till 2014-11-20 18:18:37

+2

好嗎? Node有一個名爲'E'的數據成員嗎? – PeterT 2014-11-20 18:18:40

+0

顯然,編譯器不這麼認爲。我們可以看到'Node'的聲明,那麼我們可以調解糾紛嗎? – 2014-11-20 18:18:54

回答

1

您需要Node之前定義enemy,因爲Node有一個類型的成員,和成員的類型時,它的聲明必須是完整的。

+0

敵人在頭文件「utility.h」 中定義,「datastructures.h」中的Node也是如此,兩個頭文件都包含在主cpp中,而「utility.h」包含在「datastructures.h」之前 – JoeEhab12 2014-11-20 18:23:56

+4

@ JoeEhab12 - 但是你的代碼向我們展示了'utility.h'之前的'datastructures.h'。 – PaulMcKenzie 2014-11-20 18:29:59

+0

@PaulMcKenzie對不起,我不張貼整個代碼,因爲它太長,但在主程序「utility.h」之前定義「datastructures.h」 – JoeEhab12 2014-11-20 18:34:42

相關問題