我对我的计划有两个问题。我制作的程序创建了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;
}
感谢您的帮助。
答案 0 :(得分:0)
是的,只要您的cpp文件知道这些对象代表什么,您就可以传递任意数量的内置/用户定义对象。在普通对象的情况下,cpp文件应该知道这些对象的定义但是对于指针声明就足够了。 关于第二个问题: - 我无法在任何地方看到对addnums的调用。