我想創建一個重載的朋友函數,將添加兩個分數。到目前爲止,我有以下解決方案,但我有第17和第19行的錯誤。我相信問題是與參數(分數amount1,分數amount2),但我不能完全把我的手指。誰能幫忙?這需要在Visual Studio中編譯2010C++超載+操作員朋友函數
#include <iostream>
using namespace std;
class fraction
{
public:
fraction(); //constructor for initialize
void read(); //read 3 int from keyboard for the fraction
void print(); //print the fraction on screen
friend fraction operator +(fraction, fraction); //fraction add
private:
int integral, numerator, denominator;
}
int main(){
return 0;
}
fraction operator +(fraction amount1, fraction amount2)
{
fraction temp;
temp.integral = amount1.integral + amount2.integral;
temp.numerator = amount1.numerator + amount2.numerator;
temp.denominator = amount1.denominator + amount2.denominator;
return temp;
}
void fraction::read()
{
cin >> integral >> numerator >> denominator;
}
編輯:我已經改正了我另外的算法來
friend fraction operator +(const fraction&, const fraction&); //fraction add
和
fraction operator +(const fraction& amount1, const fraction& amount2)
{
fraction temp;
temp.integral = amount1.integral + amount2.integral;
temp.numerator = (amount1.numerator)*(amount2.denominator) + (amount2.numerator)*(amount1.denominator);
temp.denominator = (amount1.denominator)*(amount2.denominator);
return temp;
}
但是在測試這個我輸出零的分子和分母變量。有人能幫忙嗎?
參見[這裏](http://stackoverflow.com/questions/4421706/operator-overloading)的簽名上如何很好的建議過載每個操作員。例如,'operator +'通常以'operator + ='的形式來實現。 – chris
您可能希望您的'operator +'採用'const'引用。 –
您在課堂定義後錯過';'。否則,你的代碼非常好(就「可編譯性」而言)。它可以改進很多,但除此之外沒有任何錯誤;''。 – AnT