2014-11-20 2 views
-1

E는 노드 구조의 구성원이지만 여전히 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; 
    } 
} 

아이디어가 있으십니까?

미안 나는 구조 정의 당신은 Node 때문에, Node 전에 enemy를 정의 할 필요가

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

반환 값 false로 인해 해당 행에 도달하지 않습니다. – Till

+2

음? 노드는 'E'라는 데이터 멤버를 가지고 있습니까? – PeterT

+0

분명히, 컴파일러는 그렇게 생각하지 않습니다. 분쟁을 중재 할 수 있도록 '노드'선언을 볼 수 있습니까? –

답변

1

가 선언 때 완료해야합니다 해당 유형의 회원 및 회원의 유형이 줄을 잊어 버렸습니다.

+0

enemy는 헤더 파일 "utility.h" 에 정의되어 있으므로 Node는 "datastructures.h"에 있고 두 헤더 파일은 주 cpp에 포함되어 있으며 "utility.h"는 "datastructures.h"앞에 포함되어 있습니다 – JoeEhab12

+4

@ JoeEhab12 -하지만 코드는'utility.h '앞에'datastructures.h'가 포함되어 있다는 것을 보여줍니다. – PaulMcKenzie

+0

@PaulMcKenzie 죄송합니다. 코드가 너무 길기 때문에 전체 코드를 게시하지 마십시오. 메인 프로그램의 "utility.h"는 "datastructures.h"앞에 정의되어 있습니다. – JoeEhab12

관련 문제