想把第二个参数默认赋值为空,怎么会提示这种错误呢?src/Xcar.cpp:51: default argument given for parameter 2 of `int 
   Xcar::execCMD(const char*, char* = 0)'
inc/Xcar.h:99: after previous specification in `int Xcar::execCMD(const char*, 
   char* = 0)'

解决方案 »

  1.   

    Xcar::execCMD(const char*, char* = 0)'
    ->
    Xcar::execCMD(const char*, char* pstr= 0)'
      

  2.   

    函数声明中必须有形参名Xcar::execCMD(const char *pstr1, char *pstr2 = NULL);省略形参名是c语言的老用法, 应该舍弃不用
    用0代替NULL也不是好习惯
      

  3.   

    to captainwh(wh):
    用0代替NULL也不是好习惯
    这个我可不同意噢。下面是stl中auto_ptr的源码:(vs7.1的memory文件509行)
    void reset(_Ty* _Ptr = 0)NULL是这样的东西:#define NULL    0
    我们应该避免使用NULL。写标准c++程序。
    linux下根本没有NULL这个宏的。我觉得用宏不是一个好习惯噢。宏的几点弊病我就不说了。
      

  4.   

    已经给了参数,可还是提示... 这是怎么回事?src/Xcar.cpp:55: default argument given for parameter 2 of `int 
       CFtp::execCMD(const char*, char* = 0)'
    inc/Xcar.h:99: after previous specification in `int CXcar::execCMD(const char*, 
       char* = 0)'
    .h
    99         int execCMD(const char* cmd_in, char* param = 0);
    .cpp
    54 int Xcar::execCMD(const char* cmd_in, char* param = 0)
      

  5.   

    我觉得可能是指向常量的指针和指针常量的问题:
    1.指向常量的指针表示指向的对象是常量,指向的内容不可以修改,但指针值本身可以修改
      eg:
         char ch[5]="abcd";
         const char* pStr=ch;     *pStr='m';       //错误赋值
         pStr="sdfjkljl"; //正确赋值
    2.指针常量表示指针本上是常量,指向的内容可以修改,但指针值本身不能修改
      eg:
        char ch[5]="abcd";
        char *const pStr=ch;    pStr="sdfjkljl";          //错误赋值
        *pStr='m';                //正确赋值
      

  6.   

    xiaoqiqixiao(七七) 说的对啊。差点忘了。楼主快检查一下吧。