所以基本上我正在嘗試做一個分數類。它將採用用戶輸入的分數並執行加法。例如,我輸入1 5和1 7,添加它將打印出12/35。
這裏是我的.H類:在C++中添加餾分
#include <string>
#ifndef _FRACTION_H_
#define _FRACTION_H_
using namespace std;
class Fraction
{
public:
Fraction();
Fraction(int n, int d);
int getNumerator() const;
int getDenominator() const;
void display();
string to_string();
Fraction operator+(Fraction &second);
private:
int numerator;
int denominator;
};
這是我的.cpp文件:
#include "Fraction.h"
#include <string>
include <iostream>
using namespace std;
Fraction::Fraction(){}
Fraction::Fraction(int n, int d)
{
this->numerator = n;
this->denominator = d;
}
int Fraction::getNumerator() const
{
return numerator;
}
int Fraction::getDenominator() const
{
return denominator;
}
Fraction Fraction::operator+(Fraction &second)
{
int n1 = getNumerator() * second.getDenominator();
int n2 = second.getNumerator() * getDenominator();
int d = getDenominator() * second.getDenominator();
return Fraction(n1+n2, d);
}
string Fraction::to_string()
{
return (getNumerator() + "/" + getDenominator()) ;
}
這是我主要方法:
bool get_input(Fraction &fract);
int main()
{
Fraction fraction1, fraction2;
if (((!get_input(fraction1)) || (!get_input(fraction2))))
cout << "Invalid Input!" << endl;
else
{
// Test harness for Arithmetic Operator Overloading
Fraction result = fraction1 + fraction2;
cout << "Addition = " << result.to_string() << endl;
}
bool get_input(Fraction& fract)
{
int num, den;
cout << "Enter numerator & denominator (separated by space)" << endl;
cin >> num >> den;
if (cin.fail())
return false;
Fraction f(num,den);
fract = f;
return true;
}
}
它設法接受用戶i NPUT。但是,它不會打印出結果。提前致謝。
您正在使用[保留標識符](http://stackoverflow.com/questions/228783/what-are-the-rules-about-using-an-underscore-in-a-c-identifier)。請爲所有人起見,**不要**在標題中放置'using namespace ...;'。另外,你的'operator +'不能用於臨時或常量對象,這是意想不到的。 – chris
對不起這是什麼意思?我該如何修復我的代碼?我認爲我的toString方法出錯了 –
它不打印出結果?它有什麼作用?你是否已經用調試器完成了它? –