大一初学者!请教哈,在重载类的运算符内的声明个对象出现异常
大一菜鸟求助!请问哈,在重载类的运算符内的声明个对象出现错误
麻烦看下
就是这里,我声明一个fraction 的m,错误是error: no matching function for call to 'fraction::fraction()'|
还有这个
有个warning: statement has no effect [-Wunused-value]|
------解决方案--------------------
意思实说你要使用默认的构造函数,因为你自己声明自己的构造函数,编译器就不会为你合成默认的一个无参数构造函数,这样写就告诉编译器继续为我合成这个构造函数。因为你的fraction m意为你要为fraction类实例化一个成员,而这个成员你没有给他参数让他符合你定义的构造函数,而编译器又没有为你合成这样一个没有参数的默认构造函数,所以会出错。
两种方法,一种是我写的这种,告诉编译器自己合成一个。再一种就是你自己显示地写一个没有参数的构造函数。
麻烦看下
fraction operator +(fraction& n) //加法重载
{
fraction m;//就是这里错了
if(b==n.b)
{
m.b=n.b;
m.a=a+n.a;
}
else
{
m.b=b*n.b;
m.a=a*n.b+n.a*b;
}
return (m);
}
就是这里,我声明一个fraction 的m,错误是error: no matching function for call to 'fraction::fraction()'|
还有这个
for(i; s[i]!='\0'; i++)
b=b*10+s[i];
有个warning: statement has no effect [-Wunused-value]|
------解决方案--------------------
意思实说你要使用默认的构造函数,因为你自己声明自己的构造函数,编译器就不会为你合成默认的一个无参数构造函数,这样写就告诉编译器继续为我合成这个构造函数。因为你的fraction m意为你要为fraction类实例化一个成员,而这个成员你没有给他参数让他符合你定义的构造函数,而编译器又没有为你合成这样一个没有参数的默认构造函数,所以会出错。
两种方法,一种是我写的这种,告诉编译器自己合成一个。再一种就是你自己显示地写一个没有参数的构造函数。