在重新声明时添加默认参数使此构造函数成为默认构造函数

时间:2019-04-29 02:46:45

标签: c++

它说在重新声明时添加默认参数使此构造函数成为默认构造函数。

我对此进行了一些研究,但我只是不明白该如何解决该问题。

struct Transaction{
    int type;
    int amount;
    int to_from_type;
    Transaction(int, int, int);
};

Transaction :: Transaction(int type=0, int amount=0, int etc=0)
{
    this->type=type;
    this->amount=amount;
    this->to_from_type=etc;
}




 Transaction :: Transaction(int type=0, int amount=0, int etc=0) //I am getting an error at this code and I cannot fix it.

    {
        this->type=type;
        this->amount=amount;
        this->to_from_type=etc;
    }

我不是C ++专家,很想在我的代码上寻求帮助。

1 个答案:

答案 0 :(得分:0)

XCode使用CLang和Apple LLVM的组合来编译C ++代码。 Clang会执行一些其他检查,包括您的案件。这里发生的事情是您定义了一个接受3个参数的构造函数,但是您的实现可以不加任何调用,这意味着,您实现的实际上与隐式默认构造函数带有相同的方法签名(方法名称和参数列表),而带有3个参数的params(在结构内部定义的参数)在编译器的视野中被遗漏了。解决方法很简单:

struct Transaction{
    int type;
    int amount;
    int to_from_type;
    Transaction(int=0, int=0, int=0);
};

Transaction :: Transaction(int type, int amount, int etc)
{
    this->type=type;
    this->amount=amount;
    this->to_from_type=etc;
}