状态错误C2535 dflt_ctor_closure(void)':成员函数已定义或声明

时间:2018-11-26 13:01:51

标签: c++ visual-studio visual-c++

我有一个C ++项目,但出现此错误。我知道错误是因为我有两个具有相同名称的函数,但是它们具有不同的参数。该如何解决?

BaseE::BaseE(double x=0.0, double y=0.0)
{
    ......
}

BaseE::BaseE(double x=0.0):
{
    ....
}

2 个答案:

答案 0 :(得分:2)

类的默认构造函数是不带参数的构造函数。这很特殊:如果您未定义(过于简化),编译器将生成一个。在这里,该类具有两个默认构造函数,因为每个构造函数都可以不带参数地调用。这就是为什么它抱怨。默认参数过多。

答案 1 :(得分:0)

当前的使用方式,当编译器遇到对BaseE()的调用时,它无法告诉您是要调用BaseE(0.0,0.0)(带默认参数的第一个构造函数)还是BaseE( 0.0)(带有默认参数的第二个构造函数)。这就是编译器抱怨的模棱两可。 您应该从(至少)一个构造函数实现中删除默认参数。