2014-09-25 84 views
-1

我有两个关于我的程序的问题。我制作的程序创建了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

你在这个示例代码中调用'addNums'的位置? – SleuthEye 2014-09-25 16:16:27

+1

我不遵循第一个问题 - 你只是问一个函数是否可以有多个参数?当然,它可以(虽然你希望'addNums'返回一个'Rational',并带有一个'return'语句)。至于第二个问题:你的'main'永远不会调用'addNums',所以当然程序永远不会达到那个函数。 – 2014-09-25 16:16:51

回答

0

是的,只要您的cpp文件知道这些对象代表什么,就可以传递任意数量的内置/用户定义对象。在普通对象的情况下,cpp文件应该知道这些对象的定义,但对于指针声明已足够。 关于第二个问题: - 我看不到任何地方的地址。