在int方法C ++中调用构造函数

时间:2015-09-27 13:14:28

标签: c++ methods constructor

好吧,我有一个名为Fractions的构造函数,它将参数作为两个整数,然后我应该有一个名为add()的方法,它应该是一个const int,它将构造函数Fractions作为参数,并且然后返回分数。

但是,我一直收到错误消息:"没有合适的转换功能来自"分数" to" const int"存在"

过去几个小时一直在谷歌搜索,但我似乎无法找到与如何绕过这一点有关的任何内容。任何有关这方面的帮助将不胜感激,谢谢!

#include <iostream>
#include <conio.h>
#include <sstream>
#include "homework3.h"

using namespace std;



//Provide all missing parts for the class declarations
class Fraction {
public:
    Fraction(){

    }
    Fraction(const int numerator, const int denominator) {
        Fraction::numerator = numerator;
        Fraction::denominator = denominator;
    }
    const int add(Fraction &f1) {

        return  f1;

    }
    string getString();

private:
    int numerator = 0;
    int denominator = 0;

};

string Fraction::getString() {
    //Returns a string of the fraction. 
    stringstream ss;
    ss << numerator << "/" << denominator;
    return ss.str();
}


int main() {

    //Test book problems
    Fraction f1(3, 5);
    Fraction f2(7, 8);

    Fraction f3 = f1.add(f2);
    Fraction f4 = f1.add(4);
    Fraction f5 = f1 + f2;
    cout << f3.getString() << endl;  //These should display 59/40
    cout << f4.getString() << endl;  //These should display 23/5
    cout << f5.getString() << endl;  //These should display 59/40

    f3 = f1.subtract(f2);
    f4 = f1.subtract(4);
    f5 = f1 - f2;
    cout << f3.getString() << endl;  //These should display -11/40
    cout << f4.getString() << endl;  //These should display -17/5
    cout << f5.getString() << endl;  //These should display -11/40


    f3 = f1.multiply(f2);
    f4 = f1.multiply(4);
    f5 = f1 * f2;
    cout << f3.getString() << endl;  //These should display 21/40
    cout << f4.getString() << endl;  //These should display 12/5
    cout << f5.getString() << endl;  //These should display 21/40

    f3 = f1.divide(f2);
    f4 = f1.divide(4);
    f5 = f1 / f2;
    cout << f3.getString() << endl;  //These should display 24/35
    cout << f4.getString() << endl;  //These should display 3/20
    cout << f5.getString() << endl;  //These should display 24/35

                                     //Now for some fun...
    f5 = (f1 * f2) / (f3 - f4) + (f5 + f2);
    cout << f5.getString() << endl;  //These should display 10671000/4200000

    cout << "Press any key to continue" << endl;
    getch();

    return 0;
}

3 个答案:

答案 0 :(得分:3)

你打电话

Fraction f4 = f1.add(4);

但是你没有任何add方法将const int作为参数并返回Fraction。你应该简单地实现这样的方法。

此外,您发布的add方法返回Fraction,而不是标题中指定的int。如果你想要它返回一个int,你可以简单地用分母除以分子。但请注意,如果您有例如1/2,结果将为0.如果这不是您的意图,请考虑使用floatdouble代替int

答案 1 :(得分:0)

此方法导致错误:

const int add(Fraction &f1) 
{
    return  f1;
}

参数类型是通过引用传递的Fraction,并且您将返回一个const int。

答案 2 :(得分:0)

Аdd方法应该返回int号。尝试覆盖强制转换操作符。