C++在定义一个函数的时候使用的引用传参,可是却报错了 ,该函数在自己写的头文件中
答案:2 悬赏:20 手机版
解决时间 2021-04-29 22:20
- 提问者网友:焚苦与心
- 2021-04-29 06:25
int ReadText(ALGraph &Graph)
{
FILE *fp;
int i,j;
double distance;
ArcNode *arcnode;
fp=fopen(s_szFileName,"r");
if(fp==NULL){
MessageBox(NULL,TEXT("文件打开错误"),TEXT("警告"),MB_OK|MB_ICONWARNING);
return 0;
}
else{
fscanf(fp,"%d",&Graph.vexnum);
for(i=1;i<=Graph.vexnum;i++){
fscanf(fp,"%d%d%d%d",&Graph.vertices[i].adjvex,&Graph.vertices[i].x,&Graph.vertices[i].y,&Graph.vertices[i].r);
Graph.vertices[i].firstLink=NULL;
}//建立顶点,并且初始化
for(i=1;i<=Graph.vexnum;i++)
for(j=1;j<=Graph.vexnum;j++){
if(i==j)
continue;
else{
distance=Decare_distance(Graph,i,j);//计算i,j的笛卡尔距离
if(Graph.vertices[i].r>distance){
arcnode=(ArcNode *)malloc(sizeof(ArcNode));//构建i点周围弧的关系
arcnode->adjvex=j;
arcnode->nextarc=Graph.vertices[i].firstLink;
Graph.vertices[i].firstLink=arcnode;
}
}
}//建立边的关系,暂时想不到好的方法
}
fclose(fp);
return 1;
}
报错信息为:
error C2143: syntax error : missing ')' before '&'
error C2143: syntax error : missing '{' before '&'
error C2059: syntax error : '&'
syntax error : ')'
如果需要完整的文件可以与我联系
最佳答案
- 五星知识达人网友:几近狂妄
- 2021-04-29 07:24
很高兴收到您的求助!-----Solo。。
直接把&去掉就可以了。不要定义引用参数。
对于引用类型,引用必须被初始化为一个对象,并且不能使它再指向其他对象,因为对引用赋值实际上是对目标对象赋值。这是引用类型的缺点,但也是引用类型的优点,因为在函数调用时需要验证引用参数的合法性。
因为你在
case ID_OPEN :
OnOpenOrSaveDialog(hwnd,ID_OPEN);
ReadText(Graph);
SendMessage(hwnd,WM_COMMAND,IDM_FILE_NEWFONT,0L);
return 0;
之前并没有初始化。所以报错、。
或者你必须在ALGraph Graph;之后就初始化Graph变量先,否则不能传值。
否则就不用形参传值。
全部回答
- 1楼网友:duile
- 2021-04-29 08:02
fscanf(fp,"%d%d%d%d",&Graph.vertices[i].adjvex,&Graph.vertices[i].x,&Graph.vertices[i].y,&Graph.vertices[i].r);???这里是为什么
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯