我很難試圖超載運算符[]
和*
。這是給定的代碼:[]和*運算符在C++中爲Rational類重載
#include<iostream>
class Rational {
public:
Rational (int numerator=0, int denominator = 1) : n(numerator), d(denominator) { }
private:
int n, d;
};
std::ostream& operator<<(std :: ostream& out, const Rational& r) {
return out << r[0] << '/' << r[1] << std::endl;
}
int main() {
Rational rat1(2,3), rat2(3,4);
std::cout << rat1 << std::endl;
std::cout << rat1 * rat2 << std::endl;
}
請超載[]和*運營商Rational類
I tried the following:
#include<iostream>
class Rational {
public:
Rational (int numerator=0 , int denominator = 1) :
n(numerator),d(denominator)
{ }
int operator[](int i){
if(i==0)
return n;
else return d;
}
Rational& operator*(Rational& rhs){
return *this(n*(rhs.n),d*(rhs.d));
}
private:
int n,d;
};
std::ostream& operator<<(std :: ostream& out , const Rational& r) {
return out<<r[0]<<'/'<<r[1]<<std::endl;
}
int main(){
Rational rat1(2,3) , rat2(3,4);
std::cout<<rat1<<std::endl;
std::cout<<rat1*rat2<<std::endl;
}
試圖在這之後我收到以下錯誤:
error: passing ‘const Rational’ as ‘this’ argument of ‘int Rational::operator[](int)’ discards qualifiers [-fpermissive]
return out<<r[0]<<'/'<<r[1]<<std::endl;
error: passing ‘const Rational’ as ‘this’ argument of ‘int Rational::operator[](int)’ discards qualifiers [-fpermissive]
return out<<r[0]<<'/'<<r[1]<<std::endl;
我在做什麼錯誤?
我懷疑downvotes和投票結束是爲了迴應糟糕的代碼格式。如果你花費一點努力使問題更容易理解,你會得到更好的答覆。所以我爲你修好了。 –
向我們展示您已經嘗試過的東西也是一個不錯的主意。否則,感覺就像你只是要求我們爲你做功課一樣。 –
Thanks.I編輯了代碼,我也顯示了我嘗試過的內容,但無法解決此問題。 – Aditya