永发信息网

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);???这里是为什么
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯