2014-09-25 5 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

+1

Я не следую первому вопросу - вы просто спрашиваете, может ли функция иметь более одного параметра? Конечно, это может (хотя вы хотите, чтобы 'addNums' возвращал' Rational', с одним оператором 'return'). Что касается второго вопроса: ваш 'main' никогда не называет' addNums', поэтому, конечно, программа никогда не достигает этой функции. –

ответ

0

Да, вы можете передать любое количество встроенных/определяемых пользователем объектов, если ваш файл cpp знает, для чего предназначены эти объекты. В случае простых объектов файл cpp должен знать определение этих объектов, но для объявления указателей достаточно. Что касается второго вопроса: - Я не могу видеть вызов addnums в любом месте.

Смежные вопросы