#define MAXNumber 70
#define MAXLINE 500
#define NUMBER 494021
#define ERROR -1
#define NULL -1
typedef struct ArcBox
{
int tail,head;
struct ArcBox * hlink,* tlink;
}ArcBox;
typedef struct FeaNode
{
char * feaname;
int type;
union range
{
char * c_range[MAXNumber];
int i_range[MAXNumber];
double d_range[MAXNumber];
};
int indegree;
int valuenum;
int visit[MAXNumber];
struct ArcBox * parent,* child;
}FeaNode;
typedef struct
{
struct FeaNode fealist[MAX_FEATURE_NUM];
int feanum,arcnum;
}BayesNetwork;
struct LNode
{
int sequence;
int valuenum;
int n;
int flag;
int type;
union Lrange
{
char ** c_range;
int * i_range;
double * d_range;
};
int * visit;
struct LNode * next;
};
typedef struct LNode * Linklist;
Linklist CalParent (BayesNetwork * nb,int i)
{
struct ArcBox * r;
struct LNode * p,* q;
Linklist head=(Linklist)malloc(sizeof(struct LNode));
if(!head)
{
error ("No space for node can be obtained!");
return ERROR;
}
p=head;
r=(* nb).fealist[i].parent;
while(r)
{
q=(struct LNode *)malloc(sizeof(struct LNode));
if(!q)
{
error("No space for node can be obtained!");
return ERROR;
}
q->type=(* nb).fealist[r->tail].type;
q->Lrange.d_range=(* nb).fealist[r->tail].range.d_range;
q->visit=(* nb).fealist[r->tail].visit;
q->sequence=r->tail;
q->valuenum=(* nb).fealist[r->tail].valuenum;
q->n=0;
clear(q->visit,q->valuenum);
p->next=q;
p=q;
r->hlink=r;
}
p->next=NULL;
return(head);
}
错误提示为:
D:\My Documents\3\Enum.C(38) : error C2039: 'Lrange' : is not a member of 'LNode'
d:\my documents\3\linklist.h(2) : see declaration of 'LNode'
D:\My Documents\3\Enum.C(38) : error C2039: 'range' : is not a member of 'FeaNode'
d:\my documents\3\bayesnetwork.h(14) : see declaration of 'FeaNode'
请教大家,到底是哪里出现了问题,谢谢了!
5 个解决方案
#1
union range
{
char * c_range[MAXNumber];
int i_range[MAXNumber];
double d_range[MAXNumber];
};
改成
union
{
char * c_range[MAXNumber];
int i_range[MAXNumber];
double d_range[MAXNumber];
} range ;
{
char * c_range[MAXNumber];
int i_range[MAXNumber];
double d_range[MAXNumber];
};
改成
union
{
char * c_range[MAXNumber];
int i_range[MAXNumber];
double d_range[MAXNumber];
} range ;
#2
没有给联合体命名。
不能用类型名去访问成员
不能用类型名去访问成员
#3
union Lrange //这里 Lrange 是 union的名字了
{
char ** c_range;
int * i_range;
double * d_range;
};
==》
union
{
char ** c_range;
int * i_range;
double * d_range;
}Lrange ; //这里 Lrange 是 union类型的一个变量
union range 类似处理
{
char ** c_range;
int * i_range;
double * d_range;
};
==》
union
{
char ** c_range;
int * i_range;
double * d_range;
}Lrange ; //这里 Lrange 是 union类型的一个变量
union range 类似处理
#4
union range
{
char * c_range[MAXNumber];
int i_range[MAXNumber];
double d_range[MAXNumber];
}range;
union Lrange
{
char ** c_range;
int * i_range;
double * d_range;
}Lrange;
需要定义共同体的变量,另宏定义里有和stdio.h重复定义的宏
{
char * c_range[MAXNumber];
int i_range[MAXNumber];
double d_range[MAXNumber];
}range;
union Lrange
{
char ** c_range;
int * i_range;
double * d_range;
}Lrange;
需要定义共同体的变量,另宏定义里有和stdio.h重复定义的宏
#5
我明白了,谢谢大家!
#1
union range
{
char * c_range[MAXNumber];
int i_range[MAXNumber];
double d_range[MAXNumber];
};
改成
union
{
char * c_range[MAXNumber];
int i_range[MAXNumber];
double d_range[MAXNumber];
} range ;
{
char * c_range[MAXNumber];
int i_range[MAXNumber];
double d_range[MAXNumber];
};
改成
union
{
char * c_range[MAXNumber];
int i_range[MAXNumber];
double d_range[MAXNumber];
} range ;
#2
没有给联合体命名。
不能用类型名去访问成员
不能用类型名去访问成员
#3
union Lrange //这里 Lrange 是 union的名字了
{
char ** c_range;
int * i_range;
double * d_range;
};
==》
union
{
char ** c_range;
int * i_range;
double * d_range;
}Lrange ; //这里 Lrange 是 union类型的一个变量
union range 类似处理
{
char ** c_range;
int * i_range;
double * d_range;
};
==》
union
{
char ** c_range;
int * i_range;
double * d_range;
}Lrange ; //这里 Lrange 是 union类型的一个变量
union range 类似处理
#4
union range
{
char * c_range[MAXNumber];
int i_range[MAXNumber];
double d_range[MAXNumber];
}range;
union Lrange
{
char ** c_range;
int * i_range;
double * d_range;
}Lrange;
需要定义共同体的变量,另宏定义里有和stdio.h重复定义的宏
{
char * c_range[MAXNumber];
int i_range[MAXNumber];
double d_range[MAXNumber];
}range;
union Lrange
{
char ** c_range;
int * i_range;
double * d_range;
}Lrange;
需要定义共同体的变量,另宏定义里有和stdio.h重复定义的宏
#5
我明白了,谢谢大家!