У меня есть два вопроса о моей программе. Созданная мной программа создает 2 объекта фракции и делает арифметику с ними. Во-первых, это возможно для функции в файле class.cpp иметь несколько объектов в качестве параметра:Классы и функции вызова вызывающего объекта
int Rational::addNums(Rational f1, Rational f2)
Во-вторых, в моем коде, по какой-то причине моя программа никогда не достигающие вызов функции addNums при выполнении. Кажется, он останавливается после функции getDenom(). Я не уверен, почему это произойдет.
class Rational
{
public:
Rational(int = 2, int = 4);//default constructor thats set numerator and denominator with default values
//set functions
void setFrac(int, int);
void setNumer(int);
void setDenom(int);
//get functions
int getNumer() const;
int getDenom() const;
//arithmetic functions
int addNums(Rational, Rational);
int subNums(int, int);
int multNums(int, int);
int divNums(int, int);
void DisplayFracs(int);
void DisplayDecimals(float);
private:
int num;//numerator of fraction1
int den;//denominator of fraction1
};
#include <iostream>
#include "Rational.h"
using namespace std;
Rational::Rational(int num, int den)
{
setFrac(num, den);
}
void Rational::setFrac(int n, int d)
{
setNumer(n);
setDenom(d);
}
void Rational::setNumer(int n)
{
if (n != 0)
num = n;
else
cout << n << " is not a valid number." << endl;
}
void Rational::setDenom(int d)
{
if (d != 0)
den = d;
else
cout << d << " is not a valid number." << endl;
}
int Rational::getNumer()const
{
return num;
}
int Rational::getDenom() const
{
return den;
}
int Rational::addNums(Rational f1, Rational f2)
{
int m = f1.den;
int n = f2.den;
int temp = 0;
if(m < n)
{
temp = m;
m = n;
n = temp;
}
cout << m << " : " << n << endl;
while(n != 0)
{
temp = m % n;
m = n;
n = temp;
}
cout << m << " : " << n << endl;
return f1.den = m;
return f2.den = n;
}
int main()
{
Rational f1(2,7);
Rational f2(3,8);
cout << f1.getDenom()<< " : " << f2.getDenom() << endl;
}
Спасибо за помощь.
Где вы называете 'addNums' в этом примере кода? – SleuthEye
Я не следую первому вопросу - вы просто спрашиваете, может ли функция иметь более одного параметра? Конечно, это может (хотя вы хотите, чтобы 'addNums' возвращал' Rational', с одним оператором 'return'). Что касается второго вопроса: ваш 'main' никогда не называет' addNums', поэтому, конечно, программа никогда не достигает этой функции. –