【发布时间】:2013-06-01 12:36:16
【问题描述】:
前几天,当我尝试使用类成员函数重载一个双参数运算符时遇到了麻烦。我尝试了引用,但没有任何改变。编译器说我不能编写一个成员函数,它接受多个与类本身相同类型的参数。这是为什么呢?
代码如下:
class Fraction
{
public:
Fraction(int num=1, int den=1): numerator(num), denominator(den) {}
Fraction(const Fraction& r): numerator(r.numerator), denominator(r.denominator) {}
Fraction& operator=(const Fraction&);
Fraction& operator*(const Fraction&, const Fraction&);
private:
int numerator, denominator;
};
Fraction& Fraction::operator=(const Fraction& r)
{
numerator = r.numerator;
denominator = r.denominator;
return *this;
}
Fraction Fraction::operator*(const Fraction& x, const Fraction& y)
{
Fraction z(x.numerator*y.numerator, x.denominator*y.denominator);
return z;
}
以下是编译器的错误信息:
Fraction& Fraction::operator*(const Fraction&, const Fraction&)' must take either zero or one argument
【问题讨论】:
-
你应该用一些小代码示例来说明这一点。听起来您误解了编译器错误。
-
请给我们一些代码,以及编译器给你的确切错误:)
-
可以的。发布代码和错误消息。
-
@juanchopanza 不,我没有!
-
“编译器说我不能编写一个成员函数,它接受多个与类本身相同类型的参数。”不,它没有,它说你不能用多个参数写
operator*。
标签: c++ class function arguments member-functions