它说在重新声明时添加默认参数使此构造函数成为默认构造函数。
我对此进行了一些研究,但我只是不明白该如何解决该问题。
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 ++专家,很想在我的代码上寻求帮助。
答案 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;
}