我创建了一个 Fraction 类,它具有在两个 Fraction 对象之间进行加减乘除的成员函数以及所需的默认构造函数和复制构造函数。
对于这个问题,我必须使用指针(不能使用向量!)因为只有用户选择才能创建 Fraction 对象。简而言之,指针声明和新初始化在不同的范围内。
我还试图重载 operator=、operator+、operator-、operator* 和 operator/ 以接受类似以下内容。
Fraction* fr1 = new Fraction(1,2);
Fraction* fr2 = new Fraction(3,4);
Fraction* fr3 = new Fraction();
fr3 = fr1 + fr2;
我当前重载的 operator= 成员函数如下所示:
Fraction* Fraction::operator=(const Fraction*& fr) {
num = fr->num;
denom = fr->denom;
return this;
}
Fraction* Fraction::operator+(const Fraction*& fr) const {
int gcd = gcdRecurEuclid(num * fr->denom + denom * fr->num, denom * fr->denom);
Fraction* temp;
temp = new Fraction((num * fr->denom + fr->num * denom) / gcd,
(denom * fr->denom) / gcd);
return temp;
}
我不断收到错误“+”:无法添加两个指针,这很可能意味着我的重载 operator+ 没有正确写入(和/或我的重载赋值运算符)。我需要做什么来纠正这个问题?同样,我的导师希望我使用指针,并且不希望我传递或返回任何内容的副本。我要么需要通过引用(或指针?类似的东西?)。