好吧,我有一个名为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;
}
答案 0 :(得分:3)
你打电话
Fraction f4 = f1.add(4);
但是你没有任何add
方法将const int
作为参数并返回Fraction
。你应该简单地实现这样的方法。
此外,您发布的add
方法返回Fraction
,而不是标题中指定的int。如果你想要它返回一个int
,你可以简单地用分母除以分子。但请注意,如果您有例如1/2,结果将为0.如果这不是您的意图,请考虑使用float
或double
代替int
。
答案 1 :(得分:0)
此方法导致错误:
const int add(Fraction &f1)
{
return f1;
}
参数类型是通过引用传递的Fraction,并且您将返回一个const int。
答案 2 :(得分:0)
Аdd方法应该返回int号。尝试覆盖强制转换操作符。