2
#include"Fraction.h"

#include<iostream>

using namespace std;


Fraction operator*(const Fraction& left, const Fraction& right)
{
    int newNum = left.getNum() * right.getNum();
    int newDenom = right.getDenom() * left.getDenom();

    Fraction result(newNum, newDenom); //Error is here, cannot convert from Fraction to int
    return result;
}

int main()
{
    Fraction a(3,4);
    Fraction b(1,2);
    Fraction c = a * b;

    cout << c << endl;
}

これが私のコードです。今週、演算子のオーバーロードを開始したばかりで、かなり行き詰っています。

メインは明らかに機能しませんが、それは通過したい入力ですが、発生しているエラーがわかりません。誰かが私のためにこれを少し分解できますか? 私はそれを感謝します。

//This is my Header file for anyone that wants to see it

#ifndef FRACTION_H
#define FRACTION_H

class Fraction
{

public:

    Fraction(int numParam, int denomParam);

    void setNum(int numParam);
    int getNum() const;

    void setDenom(int denomParam);
    int getDenom() const;

private:
    int num;
    int denom;

};

#endif
4

2 に答える 2

1

わかりました問題が何であったかはわかっていると思います。ヘッダー ファイルでは、コンストラクターが定義されていないため、プログラムを実行したときに、fraction クラスが 2 つの int を受け取ることを認識できませんでした。したがって、コンストラクターを定義することにより、プログラムの実行が許可されました!

基本的にこれは入っていませんでした。

Fraction::Fraction(int numeratorParam, int denomeratorParam)
{

numerator = numeratorPram;

denumerator = denumeratorParam;

}
于 2013-10-08T22:33:57.523 に答える