2016-12-02 5 views
-1

Meine Zuweisung erfordert, dass ich ein Programm schreibe, das die Addition, Subtraktion, Multiplikation und Division der rationalen Zahlenoperationen an zwei Brüchen ausführt. Sie müssen Klassenobjekte mit den Variablen Zähler und Nenner sein. Ich bin ein Kopf gegeben, die ich ändern kann nicht:Klassenfunktionen mit konstanten Objektparametern?

class Rational 
{ 

    private: 
     int numer; 
     int denom; 
    public: 
     Rational(); 
     Rational(int); 
     Rational(int, int); 
     const Rational add(const Rational &) const; 
     const Rational subtract(const Rational &) const; 
     const Rational multiply(const Rational &) const; 
     const Rational divide(const Rational &) const; 
     void display() const; 
}; 

Wenn beispielsweise gegeben Fraktionen a, b und c, muss ich ein multiplizieren mit b und speichern sie in c:

c = a.multiply(b) 

die Funktionsdefinition ich habe kommen mit so etwas wie

const Rational Rational::multiply(const Rational &) const 
{ 
    return a.numer*numer, a.denom*denom; 
} 

das Objekt a in der Funktion nicht definiert ist, aber ich habe keine andere Ideen, wie ich in einem Klassenobjekt als Variable übergeben kann und es vermehren zu eine andere Klasse.

+0

Name Geben Sie Ihren Parameter: 'const Rational Rational :: multiplizieren (const Rational & a) const'. Verwenden Sie Ihren Konstruktor: 'return Rational (a.numer * numer, a.denom * be); –

Antwort

2
  1. Geben Sie den Parameter einen Namen,
  2. korrekt das Ergebnis Objekt erstellen und es zurück.

    const Rational Rational::multiply(const Rational & a) const 
    { 
        return {a.numer*numer, a.denom*denom}; 
    } 
    
1

Sie benötigen die zweiparametrige Klassenkonstruktors in Ihrer return-Anweisung zu verwenden.

return Rational(a.numer*numer, a.denom*denom); 
1
const Rational Rational::multiply(const Rational & rhs) const 
{ 
    return Rational{numer * rhs.numer, denom * rhs.denom}; 
} 
Verwandte Themen