我有一个C ++项目,但出现此错误。我知道错误是因为我有两个具有相同名称的函数,但是它们具有不同的参数。该如何解决?
BaseE::BaseE(double x=0.0, double y=0.0)
{
......
}
BaseE::BaseE(double x=0.0):
{
....
}
答案 0 :(得分:2)
类的默认构造函数是不带参数的构造函数。这很特殊:如果您未定义(过于简化),编译器将生成一个。在这里,该类具有两个默认构造函数,因为每个构造函数都可以不带参数地调用。这就是为什么它抱怨。默认参数过多。
答案 1 :(得分:0)
当前的使用方式,当编译器遇到对BaseE()的调用时,它无法告诉您是要调用BaseE(0.0,0.0)(带默认参数的第一个构造函数)还是BaseE( 0.0)(带有默认参数的第二个构造函数)。这就是编译器抱怨的模棱两可。 您应该从(至少)一个构造函数实现中删除默认参数。