C2039:"E"不是错误的成员"Node"

C2039 :'E' is not a member of "Node" error

本文关键字:成员 错误 Node C2039      更新时间:2023-10-16

>E 是节点结构中的成员,但我仍然收到 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;
};
您需要

Node之前定义enemy,因为Node具有该类型的成员,并且在声明成员类型时必须完整。

在另一个结构中使用结构时,必须首先声明包含在另一个结构中的结构。在这种情况下,作为结构节点成员的结构敌人必须在结构节点上方声明。这使结构节点能够知道结构敌人是什么或其所有成员。

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;
};