首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

关于语法方面的有关问题

2012-09-16 
关于语法方面的问题大家好,我写了一次程序,名字是3_7.cpp,代码如下:C/C++ code#includeiostreamusing na

关于语法方面的问题
大家好,我写了一次程序,名字是3_7.cpp,代码如下:

C/C++ code
#include<iostream>using namespace std;typedef char ElemType;struct GLNode{        bool tag;        union{                ElemType data;                GLNode* sublist;        };        GLNode* next;};void Create1(GLNode*& GL, char* a){        if(NULL == a)        {                return;        }        if('\0' == *a)                return;        if('(' == *a)        {                GL->tag = true;                Create1(GL->sublist, ++a);        }        else if('#' == *a)        {                GL = NULL;        }        else        {                GL->tag = false;                GL->data = *a;        }        ++a;        if(*a == ',')                Create1(GL->next), ++a;        else if(*a == ')' || *a == ';')        else if(*a == ')' || *a == ';')                GL->next = NULL;}void Print(GLNode* GL){        if(GL->tag)        {                cout << '(';                if(GL->sublist == NULL)                        cout << '#';                else                        Print(GL->sublist);                cout << ')';        }        else cout << GL->data;        if(GL->next != NULL)        {                cout << ',';                Print(GL->next);        }}int main(){        GLNode* GL = NULL;        char str[] = "(a,(#),b,c(d,(e)));";        Create1(GL, str);        Print(GL);        return 0;}


  但是在fedora上面用命令“g++ 3_7.cpp -g -o 3_7”,编译出问题:
3_7.cpp: 在函数‘void Create1(GLNode*&, char*)’中:
3_7.cpp:15:6: 错误:给予 function‘void Create1(GLNode*&, char*)’的参数太少
3_7.cpp:15:6: 附注:在此声明


  请问是什么原因?谢谢!


[解决办法]
楼主粗心了,看这句
if(*a == ',')
Create1(GL->next), ++a;
只有一个参数
[解决办法]
因为你这相当于递归定义了。Create1(GL->next), ++a;调用函数的时候传值过去,结果接收错误,因为参数少了。所以是在定义的时候出错!
[解决办法]
编译器没有办法确定:你是需要Greate1函数带一个参数,还是带两个参数。

所以只能告诉你函数定义有问题。

热点排行