课程&函数调用调用对象

时间:2014-09-25 16:11:51

标签: c++ objective-c class

我对我的计划有两个问题。我制作的程序创建了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;
}  

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

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