Frage zu Methodenaufruf
-
Ich finde keinen Ansatz, innerhalb von ostream..., wo der << Operator überladen wird, die Methode kuerzen aufzurufen. Kann mir jemand helfen?
Danke.void frac::kuerzen(long zaehler, long nenner) { long n; while(nenner > 0) { n = nenner; nenner = zaehler % nenner; zaehler = n; //zaehler ist jetzt der Hauptnenner } m_zaehler /= zaehler; m_nenner /= zaehler; }
ostream& operator<<(ostream& os, const frac& a) { //folgendes kann nicht laufen: //frac.kuerzen(a.m_zaehler, a.m_nenner); //aber was dann? os <<a.m_zaehler <<"/" <<a.m_nenner; return os;}
-
Du willst den Operator<< von ostream überladen???
Bitte drücke dich deutlicher aus, das ergibt keinen Sinn!
Ostream ist ne eingebaute Klasse, die man nicht ändern sollte(dann hast du nämlich keine Standard-STL mehr und der Compiler wird das nichts mögen).
-
ich will einfach aus ostream heraus die methode "kuerzen" aufrufen, so dass m_zaehler und m_nenner gekürzt werden. ausgegeben werden soll dann nur das gekürzte ergebnis.
Ich kann kuerzen direkt in ostream einbauen, aber das wäre ja platzvergeudung und code-aufblähung.
-
Warum hat deine kuerzen-Methode überhaupt zwei Parameter? Wenn sie nur das tun würde, was ihr Name vorgibt, nämlich zu kürzen, würde sie die nicht benötigen. Lass die Parameter weg, rechne nur mit den Membern, und schon kannst du problemlos a.kuerzen() aufrufen (wenn du m_nenner und m_zaehler mutable gemacht hast).
Ich würde aber die kuerzen-Methode nicht vor jeder Ausgabeoperation aufrufen, sondern nach jeder Operation, die den Bruch ändert.