2016-10-02 7 views
0

これは私の最初の主要な課題で、OOPのC++です。初心者のOOPでのC++、割り当ての問題

using namespace std; 

class Fraction 
{ 
    public: 
    Fraction(void); 
    Fraction(int aN, int aD); 
    int getNumerator(); 
    int getDenominator(); 
    Fraction adder(Fraction aF); 
    ~ Fraction(void); 
} 

割り当てが加算機能は、現在のオブジェクトが最初のオペランドで、関数のパラメータがある方法で動作するようになっていることを言う:私は次のクラス定義を与えてきた私のヘッダの 2番目のオペランド。例。オブジェクトが1/6で、パラメータが1/3の場合、加算器は3/6を与えるはずです。

私の質問は、以下の通りである:

a)をgetNumerator()getDenominator()の両方が整数を返すように設定されますが、私は返すことになっているものを加算器(フラクションAF)見当がつかないています。クラスFractionのインスタンスを返すことになっています。コンストラクタで設定されたパラメータを使用する場合、私の製品は2つを生成するはずですが、整数ではありません。例えば

これは私がこれまでに築いてきたのcppです:

#include "fraction.h" 
#include <string> 

Fraction::Fraction() 
{ 
} 

Fraction::Fraction(int aN, int aD) { 
    numerator = aN; 
    denominator= aD; 
} 

int Fraction::getNumerator() { 
    return numerator; 
} 

int Fraction::getDenominator() { 
    return denominator; 
} 

Fraction Fractiom::adder(Fraction aF) { 
    aF = 1/3?  
    return ?? 
} 

Fraction::~Fraction() 
{ 
} 

問題は算術演算ではありません。私はそれらを理解することができます。私はこの関数の加算器が何を返すことができるのか分かりません。何がコンパイルちょうど約ので、私はちょうどので、私たちは、私が作ったソースを見れば、私は(整数など単一の文字列)次に

を扱っていたサイズを知っている、最も単純な例を必要としています。

#include <iostream> 
#include "fraction.h" 
using namespace std; 

int main() { 

    Fraction f1(1, 6); 
    cout << f1.getNumerator() << "/" << f1.getDenominator() << endl; 
    cin.get(); 
    return 0; 
} 

最初の例では、ちょうど私がgetNumerator()getDenominautor() to produce a random Fraction`を使う方法を示しています。

B)私は、CPPの右に算術を得るとき、私は自分の製品を生産するためにf1.adder(aF)を書くことができると仮定し、またはその仮定が間違っていますか?

+0

私の主なdosen'tは、加算器機能を備えCPPで算術演算を実装する必要があります。私はちょうどオペレータを取得しないでください=¨これらのオペランドに一致します。 – Morphalog

+0

1)私はそれがまだメインの一部ではないことを意味しました。 2)私はあなたの意見を誤解していると思います。私はf1の積分を変更して新しい分数を得ることができると言っているようですが、私はそれを知っています。私は自分のaFを初期化する方法や加算器を作る方法を分かりません – Morphalog

+0

'aF'を返す必要はなく、代わりに' Fraction result(...、...) 'のような別の 'Fraction'を初期化します。 ; madmaxが示すようにreturn文で直接行います。 – BeyelerStudios

答えて

3

A)それはあなたの方法のフラクション::加算器は次のように別の分数オブジェクトを返す必要があることは明らかです:

... 
return Fraction(resultingNumeratorHere, resultingDenominatorHere); 

b)は確かに。あなたはそれが分数のオブジェクトであるため、問題は、私はint型AFを同一視することはできませんあるほか、

+0

私はちょうど実際には何も追加することなく、ランダムバック割合を取得するには、リターンフラクション(getnumerator()、getdenominator)を書き込もうとしましたリターンフラクション(getnumerator()、getdenominator) – Morphalog

+0

を書き込もうとしました。問題は私が私のメインに行くとき、私はcout << b1.adder()<< endl;のようなものを入力しようとしています。関数呼び出しでは引数がほとんどないと言います。私は加算器()内に何かを加える必要があるが、何? – Morphalog

+0

この場合、オブジェクトの正確なコピーが返されます。 次のようなものを使用する必要があります。 分数分数::加算(分数af){ 戻り分数(分子* af.denominator +分母* af.numerator、分母* af。分母); } – madmax