Хорошо, у меня есть конструктор, называемый фракциями, который принимает в качестве параметров два целых числа, тогда я должен иметь метод с именем add(), который должен быть const int, который принимает как параметры конструкторских фракций, а затем возвращает Фракции.Вызов конструктора в методе int C++
Однако я продолжаю получать сообщение об ошибке: «Нет подходящую функцию преобразования из„фракции“до„сопзИте Int“существует»
обыскивал Google в течение последних нескольких часов, но я не могу найти что-либо касающееся того, как обойти это. Любая помощь по этому поводу будет оценена, спасибо!
#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;
}
Кажется, что есть какая-то путаница. Ваша функция add() принимает Fraction и возвращает int, но вы пытаетесь вернуть из нее объект Fraction. Не уверен, что вы действительно хотите сделать. – SergeyA
Не является ли возвращаемое значение f1 a Fraction? – Trevor
Не с подписью, которую вы дали. 'const int' - это возвращаемое значение. Это не имеет смысла. Также ваша добавленная реализация ничего не добавляет. – drescherjm