我想重载“=”运算符,但它给了我错误
I want to overload "=" operator but it gives me error
friend Fraction operator=(const Fraction &newfraction) {
Fraction changedfraction;
changedfraction.numerator = newfraction.numerator;
changedfraction.denominator = newfraction.denominator;
changedfraction.simplify(changedfraction.numerator,
changedfraction.denominator);
return (changedfraction);
}
签名为 Fraction operator=(const Fraction &newfraction)
的赋值运算符必须是成员函数。 friend
函数不是成员。所以参数的数量与分配所需的 2 个不匹配。删除 friend
并确保它被声明为成员函数。
struct Fraction
{
Fraction& operator=(const Fraction &newfraction) { .... }
....
};
另请注意,传统上赋值运算符 returns 是对 *this
的引用,而不是值。
friend Fraction operator=(const Fraction &newfraction) {
Fraction changedfraction;
changedfraction.numerator = newfraction.numerator;
changedfraction.denominator = newfraction.denominator;
changedfraction.simplify(changedfraction.numerator,
changedfraction.denominator);
return (changedfraction);
}
签名为 Fraction operator=(const Fraction &newfraction)
的赋值运算符必须是成员函数。 friend
函数不是成员。所以参数的数量与分配所需的 2 个不匹配。删除 friend
并确保它被声明为成员函数。
struct Fraction
{
Fraction& operator=(const Fraction &newfraction) { .... }
....
};
另请注意,传统上赋值运算符 returns 是对 *this
的引用,而不是值。