E是Node结构中的成员,但我仍然收到C2039错误?这是我的代码:
#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 :(得分:1)
您需要在enemy
之前定义Node
,因为Node
具有该类型的成员,并且成员的类型在声明时必须完整。< / p>
答案 1 :(得分:0)
当要在另一个结构中使用一个结构时,必须首先声明另一个结构中包含的结构。在这种情况下,必须在struct Node上方声明作为struct Node成员的struct敌人。这使结构节点可以知道结构敌人是什么或其所有成员。
struct enemy{
//starting x,y
int ID;
int T;
int Region;
int Distance;
float Health;
int Type;
int Pr;
int P;
};
struct Node{
enemy E; //struct enemy is defined before used here
Node *next;
};