新加入了一个函数:
Function Type:
void
Function Declaration:
Set(int nMax = -1,int nMin = -1,BOOL bTj = TRUE)OK后出现如下错误:
This function's declaration will not match its definition:
Declaration: "Set(int nMax = -1,int nMin = -1,BOOL bTj = TRUE)"
Definition: "Set(int nMax, int nMin)"将Function Declaration:改为:
Set(BOOL bTj = TRUE,int nMax = -1,int nMin = -1)则无错误,这是为何?

解决方案 »

  1.   

    这是因为函数重载的问题,
    如果你事先定义了
    Function Type:
    void
    Function Declaration:
    Set(int nMax = -1,int nMin = -1)
    然后再加入你如上的定义那就一定会出现问题,
    原因很简单:
    比如你有如下调用:
    Set();
    你能告诉我你想调用只有两个参数的Set(int nMax = -1,int nMin = -1),
    还是想调用三个参数的Set(int nMax = -1,int nMin = -1,BOOL bTj = TRUE)呢,
    也许你知道,但是编译器却无法知道!
    解决办法只能是重新考虑一下你的参数默认值问题,有可能的话还要调整一下参数的顺序。
      

  2.   

    定义了Set(int nMax = -1,int nMin = -1),然后又定义了
    Set(int nMax = -1,int nMin = -1,BOOL bTj = TRUE);
    如果你这么调用Set(4,4);
    编译器无法确定你是调用第一个函数还是第二个函数。
    因为第二个函数中bTj有默认值TRUE.
      

  3.   

    这不是函数重载的问题,大家可以新建一个对话框程序,直接加入我的 Set(int nMax = -1,int nMin = -1,BOOL bTj = TRUE) 函数,就会出错.再新建一个对话框程序加入  Set(BOOL bTj = TRUE,int nMax = -1,int nMin = -1) 就没有错误. 主要的问题在于 bTj的位置.是否因为 int 是 基本类型 而 BOOL 是 派生类型 呢?很简单的,大家试一下就知道问题了.