rational
-
hallo, ich hab nur ein kleines problem (für Leute die es mit C++ drauf haben, aber grosses für mich). Ich bekomme nicht hin mit Überladen. Iverzweifele an der sache.ich soll:
"Schreiben Sie auch eine private Hilfsfunktion zum Kürzen der Brüche. Rufen Sie diese Funktion nach jeder Operation auf, so dass das Ergebnis immer gekürzt ist. Beachten Sie, daß alle Funktionen jeweils nur ein Argument übergeben bekommt, da die andere Zahl die der aufgerufenen Klasse ist.... wie gesagt es fehlt an überladen
kann jemand bitte ...dringend helfen....meih Header datei:
// ratio.h // Klasse für rationale Zahlen #ifndef ratio_h #define ratio_h #include <iostream> using namespace std; class rational { public: rational() : zaehler(1), nenner(1) {} rational (long); // Abfrage inline long Zaehler () const {return zaehler;} long Nenner () const {return nenner;} void add(rational a, rational b); void sub(rational a, rational b); void mult(rational a, rational b); void div(rational z, rational n); void definiere(long zaehler, long nenner); void eingabe(); void ausgabe() const; void kehrwert(); Rational operator+(int); private: void kuerzen(); friend rational operator+(rational, rational); long zaehler, nenner; }; #endif// ratio.cpp #include"ratio.h" #include<iostream> #include<assert.h> rational::rational(long ganz) // Typumwandlungskonstruktor { zaehler = ganz; nenner = 1; } Rational Rational::operator+(int summand){ Rational ergebnis; ergebnis.zaehler= zaehler + summand*nenner; ergebnis.nenner=nenner; ergebnis.Kuerze(); return ergebnis; }danke in vorraus
-
Rational operator+(int); // Du schreibst hier Rational groß, ansonsten klein. // ... friend rational operator+(rational, rational); // Diese Funktion definierst du später nirgendwo. // ... Rational Rational::operator+(int summand){ // Wieder Groß- und Kleinschreibung Rational ergebnis; // dito // ... ergebnis.Kuerze(); // schon wieder!Außerdem noch ein paar Kleinigkeiten:
using namespace std; // keine so gute Idee in einem Header #include<assert.h> // Der heißt jetzt cassert. Außerdem verwendest du nichts darausAllgemein: Üblicherweise würde man + über += definieren, aber versuch lieber erstmal nur den + hin zu bekommen.