我创建了一个分数类,它是有成员函数进行加,减,乘,并与所需的默认沿着两个分数之间的对象划分拷贝构造函数。
对于这个问题,我必须使用指针(不能使用矢量!),因为如果用户选择该分数对象只能被创建。 总之,指针声明和新的初始化是差范围。
我想也重载运算符=,+运营商,运营商,运营商*和运营商/接受类似于下面的东西。
Fraction* fr1 = new Fraction(1,2);
Fraction* fr2 = new Fraction(3,4);
Fraction* fr3 = new Fraction();
fr3 = fr1 + fr2;
我现在的重载运算符=成员函数看起来就像这样:
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;
}
我不断收到错误“+”:不能添加两个三分球,这很可能意味着我的重载操作符+不正确地写入(和/或我的重载的赋值运算符)。 我需要做什么做纠正呢? 同样,我的教练希望我的指针工作,并且不希望我传递或返回的任何副本。 我要么需要通过引用传递(或指针?类似的事情?)。