注册 登录
编程论坛 C++ Builder

重载冲突问题

vfdff 发布于 2008-06-15 18:49, 1964 次点击
我定义了两个函数
double Short_File_Pnsr(char const *fpath1,char const *fpath2);与
double Short_File_Pnsr(char const *fpath1,char const *fpath2,int planValue = 0);
并声明
extern double Short_File_Pnsr(char const *fpath1,char const *fpath2);与
extern double Short_File_Pnsr(char const *fpath1,char const *fpath2,int planValue = 0);
在使用Short_File_Pnsr(“pre.raw”,"post.raw");进行调用,有个错误是重载冲突
把第二个函数声明的默认值去掉成为
extern double Short_File_Pnsr(char const *fpath1,char const *fpath2,int planValue);后(定义保持不变),再编译这个错误就消失
我有个疑问,难道函数的形势以声明为准吗?
7 回复
#2
xunxunmimi2008-06-16 11:20
不知道“难道函数的形势以声明为准吗?”这句话什么意思

可以将一个Short_File_Pnsr函数改名

一个函数不能:既作为重载函数,又作为有默认参数的函数
#3
vfdff2008-06-17 00:37
回复 2# xunxunmimi 的帖子
可以吧,只是这里有冲突而已,如我把另一个函数的参数个数修改了 就不会有冲突了
#4
itfate2008-08-09 18:32
你函数的默认值错了...
有3个参数时,当第三个参数设成默认值时,必需第2个必需也设有默认值....
#5
vfdff2008-08-22 16:25
回复 4# itfate 的帖子
恩 其实就是带有一个默认值的三个参数的函数和 两个参数的函数由冲突
#6
yi10182008-08-23 14:49
回复 5# vfdff 的帖子
你知道是怎么回事对吧!!!可是有时还是会出现这种情况。
#7
scauhj2008-08-25 22:46
当重载时,第二个函数中第三个参数为默认,编译器寻找的时候就会出现二义性,所以会出现那种情况。你在使用第二个函数时可以显式Short_File_Pnsr(“pre.raw”,"post.raw",0)不就行咯
1